Windows Shell命令获取当前目录的完整路径?


223

是否可以使用Windows命令行命令获取当前工作目录的完整路径?

另外,如何将该路径存储在批处理文件中使用的变量中?


find / dir / to / start / from -type f -ls此格式将日期格式化为数字find / dir / to / start / from -type f -exec ls -l --time-style =“ +%Y%m% e%H:%M“ {} \;

Answers:


356

使用cd不带参数,如果你直接使用shell,或者%cd%如果你想在一个批处理文件中使用它(它像一个环境变量)。


11
怎么你明白他是想从说?并且,在dos和Windows cmd下,其通常只是“ cd”
Rook

10
老实说,正如问题所述,我想不出他们可能想问的其他事情。
Trevor Bramble

1
我可以将此路径存储在.bat文件的变量中吗?
user62958,2009年

@unknown-首先描述原始问题可能会更好。
Rook

100

您可以按如下所示设置批处理/环境变量:

SET var=%cd%
ECHO %var%

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

在此处输入图片说明

更新:如果您使用aSET var = %cd%代替SET var=%cd%,则会发生以下情况。感谢jeb。

在此处输入图片说明

从批处理文件捕获当前目录


2
根据问题,此答案实际上应该是公认的答案。
勒Nyffenegger

7
但这不起作用,因为SET var = %cd%将变量中的值var<space>不放入var。您应该在SET命令中避免空格
jeb

1
根据问题,此答案实际上应该是公认的答案。
shridutt kothari '16

51

引用Windows帮助中的set命令(set /?):

如果启用了命令扩展,则有几个动态
可以扩展但不会显示在其中的环境变量
SET显示的变量列表。这些变量值是
每次扩展变量的值时都会动态计算。
如果用户使用以下名称之一显式定义变量,则
该定义将覆盖下面描述的动态定义:

%CD%-扩展到当前目录字符串。

%DATE%-使用与DATE命令相同的格式扩展到当前日期。

%TIME%-使用与TIME命令相同的格式扩展到当前时间。

%RANDOM%-扩展为0到32767之间的随机十进制数。

%ERRORLEVEL%-扩展为当前的ERRORLEVEL值

%CMDEXTVERSION%-扩展到当前的命令处理器扩展
    版本号。

%CMDCMDLINE%-扩展到调用该命令的原始命令行
    命令处理器。

注意%CD% - expands to the current directory string.零件。



18

对于Windows,我们可以使用

cd

对于Linux

pwd

命令在那里。


17

这一直对我有用:

SET CurrentDir="%~dp0"

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

ECHO %CurrentDir%

Pause

2
这样做做错了-查找批处理脚本的路径,而不是当前目录。
哈里·约翰斯顿

2
由于回答了OP的问题而被投票……并给了我我想要的确切解决方案。谢谢!
A-Diddy

不错的收获。当前目录可以引用调用文件的命令,而不是文件本身的位置。
Tam Le

9

对于Windows,cd其本身将显示当前的工作目录。

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


但是我不明白为什么他需要“ cd”来查看当前目录。默认情况下,它显示为天。而且,如果他更改了它,那么他当然会知道“ cd”的作用。
Rook

很老,但只是出于完整性考虑:是的,Windows确实为此提供了一个变量。它的名字(guesss ...)%cd%
Stephan


5

基于跟进问题(将数据存储在变量中)在chdir帖子的注释中,我打赌他想存储当前路径以在更改目录后恢复该路径。

原始用户应查看“ pushd”,该目录将更改目录并将当前目录推入可通过“ popd”还原的堆栈。在任何现代Windows cmd shell上,这都是制作批处理文件时要采用的方法。

如果您确实需要掌握当前路径,那么现代cmd外壳程序还具有%CD%变量,您可以轻松地将其填充到另一个变量中以供参考。


5

.bat在下创建一个文件System32,让我们将其命名copypath.bat为复制当前路径的命令可能是

echo %cd% | clip

说明:

%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.

现在copyclip随处可见。


3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

但是,当然,gmaran23的答案要容易得多。


从定义上讲,他的答案更好,因为您的答案是错误的。它不适用于带空格的路径。
加里克

添加tokens=*修复。
勒内Nyffenegger

2

在Windows命令提示符下,chdircd将在控制台中打印当前工作目录的完整路径。

如果要复制路径,则可以使用:cd | clip


0

在Windows上,键入cd当前工作路径。

在Linux上,pwd用于当前工作路径。


5
使用相同的解决方案已经有10个答案,但有更多解释
jeb

0

作为可能的代码之一

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.