获取当前目录的完整路径的 Windows shell 命令是什么?

361

有没有一个Windows命令行命令可以获取当前工作目录的完整路径?

另外,我怎样才能将这个路径存储在批处理文件中使用的变量中?


查找 /dir/to/start/from 目录下的所有文件并列出详细信息,日期格式为数字形式。查找 /dir/to/start/from 目录下的所有文件并列出详细信息,日期格式为 "+ %Y %m %e %H:%M"。 - user1378779
请查看此答案:https://dev59.com/mHRB5IYBdhLWcg3weXSX#52301748 - Vishrant
14个回答

565

如果您在直接使用shell,请使用无参数的cd命令;如果您希望在批处理文件中使用它(它的行为类似于环境变量),请使用%cd%


13
从那个里面,你是怎么理解他想表达什么的?在DOS和Windows命令提示符下,通常只需使用“cd”命令。 - Rook
17
老实说,我无法想到除了问题陈述的内容以外他们可能试图询问的其他事情。 - Trevor Bramble
1
我可以在 .bat 文件中将这个路径存储在一个变量中吗? - user62958
@unknown - 你最好一开始就描述原始问题。 - Rook

128

您可以按照以下方式设置批处理/环境变量:

SET var=%cd%
ECHO %var%

Windows 7 x64的cmd.exe示例截图。

enter image description here

更新:如果你使用SET var = %cd%而不是SET var=%cd%,将会发生以下情况。感谢jeb。

enter image description here

从批处理文件中获取当前目录


5
根据问题,这个答案实际上应该被接受。 - René Nyffenegger
8
但这并不起作用,因为 SET var = %cd% 把值放在变量 var<space> 而不是 var 中。你应该避免在 SET 命令中使用空格。 - jeb
2
根据问题,这个答案实际上应该被接受。 - Shridutt Kothari

59
引用Windows帮助中的set命令(set /?):
如果启用了命令扩展,则存在多个可扩展但不显示在SET显示的变量列表中的动态环境变量。这些变量值会在每次扩展变量值时动态计算。如果用户显式定义了具有其中一个名称的变量,则该定义将覆盖下面描述的动态定义:
%CD% - 扩展为当前目录字符串。
%DATE% - 使用与DATE命令相同的格式扩展为当前日期。
%TIME% - 使用与TIME命令相同的格式扩展为当前时间。
%RANDOM% - 扩展为0到32767之间的随机十进制数。
%ERRORLEVEL% - 扩展为当前ERRORLEVEL值
%CMDEXTVERSION% - 扩展为当前命令处理程序扩展版本号。
%CMDCMDLINE% - 扩展为调用命令处理程序的原始命令行。
注意%CD% - 扩展为当前目录字符串。部分。

36
在Unix上? pwd

4
原始问题要求提供一个“命令”,但未指定操作系统。现在已经指定了操作系统,因此这个答案不再相关。 - Tisch

34

这对我一直有效:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause

6
这个做法有误 - 它找到的是批处理文件的路径,而不是当前目录的路径。 - Harry Johnston
4
因为回答了原帖的问题并提供了我正在寻找的确切解决方案,所以我给你点赞。谢谢! - A-Diddy
1
不错的发现。当前目录可能指调用文件的命令,而不是文件本身的位置。 - Tam Le
2
%cd% 不是正确的答案。如果使用管理员访问权限启动CMD窗口,则目录显示为%windir%\system32\。即使在管理员启动的CMD窗口中,%~dp0%也会显示适当的目录。 - Aaron Reed

26

对于Windows操作系统可以使用

cd

命令, 对于Linux则有

pwd

命令可用。


在PowerShell中,cd命令会将当前路径返回到c:\users\[me],无论当前路径是什么。 - undefined

12
在System32下创建一个.bat文件,我们将其命名为copypath.bat,用于复制当前路径,具体命令可能是:
echo %cd% | clip

解释:

%cd% 命令会返回当前路径。

%cd% 命令会返回当前路径。

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

现在copypath可以在任何地方使用。


1
你可以使用“cd | clip”将当前路径复制到剪贴板。 - Дмитро Олександрович

11

在Windows中:

CHDIR 显示或更改当前目录的名称。

在Linux中:

PWD 显示当前目录的名称。


9

对于Windows系统,只输入cd命令将会显示当前工作目录。

对于类Unix系统,可以使用pwd命令执行相同的任务。在某些shell下,您还可以使用$PWD变量。我不确定Windows是否支持通过shell变量获取当前工作目录。


我无法理解他为什么需要使用“cd”命令来查看当前目录。默认情况下,它就像白天一样明显可见。如果他已经更改了目录,那么他肯定知道“cd”命令的作用。 - Rook
非常老旧,但只是为了完整性:是的,Windows 确实有一个变量来表示当前目录。它的名称是(猜猜看……)%cd% - Stephan

5

根据在chdir帖子评论中的跟进问题(将数据存储在变量中),我打赌他想要存储当前路径以便在更改目录后恢复它。

原始用户应查看"pushd",它可以更改目录并将当前目录推入可以使用"popd"还原的堆栈。在任何现代Windows cmd shell中制作批处理文件时都应该使用这种方法。

如果您真的需要获取当前路径,则现代cmd shell也有一个%CD%变量,您可以轻松地将其存储在另一个变量中以供参考。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接