Batch file 批处理文件%cd%不存在';更改当前工作目录后,t发生更改
我编写了一个批处理文件(windows os),该文件使用%CD%打印当前工作目录,但即使我更改了当前目录,%CD%的值也没有更改。这种奇怪的行为发生在“IF”语句的上下文中 下面是文件夹和批处理文件Test.bat的快照 我从dir3调用批处理文件 如果代码如下,则工作正常:Batch file 批处理文件%cd%不存在';更改当前工作目录后,t发生更改,batch-file,cd,Batch File,Cd,我编写了一个批处理文件(windows os),该文件使用%CD%打印当前工作目录,但即使我更改了当前目录,%CD%的值也没有更改。这种奇怪的行为发生在“IF”语句的上下文中 下面是文件夹和批处理文件Test.bat的快照 我从dir3调用批处理文件 如果代码如下,则工作正常: @echo off @echo %CD% cd /d c:\temp\dir1 @echo %CD% 但是在下面的代码中,它并没有像提示窗口的快照中所示那样工作。即使更改了当前工作目录,它也会打印第一个目录-c:
@echo off
@echo %CD%
cd /d c:\temp\dir1
@echo %CD%
但是在下面的代码中,它并没有像提示窗口的快照中所示那样工作。即使更改了当前工作目录,它也会打印第一个目录-c:\temp\dir3
@echo off
if exist "c:\bom" (
@echo file exist already
) else (
@echo %CD%
cd /d c:\temp\dir1
@echo %CD%
)
因此您缺少
延迟扩展。但这里有两种方法:
@echo off
setlocal enabledelayedexpansion
if exist "c:\bom" (
@echo file exist already
) else (
@echo !CD!
cd /d c:\temp\dir1
@echo !CD!
)
或者只使用cd
而不使用echo
ing变量%cd%
@echo off
if exist "c:\bom" (
@echo file exist already
) else (
cd
cd /d c:\temp\dir1
cd
)
首先,使用反斜杠而不是正斜杠。cd/d“c:\dir1”,因为windows默认使用反斜杠。我还希望你提供一个屏幕截图,如果可能的话,它不回显新的当前目录。此外,除非您想使用实际变量%cd%
,否则只需执行cd
,而无需@echo%cd%
cd
,无需任何参数即可打印当前工作目录。无需使用@echo%CD%
@GerhardBarnard-谢谢,我添加了快照。根据您的评论进行检查后,我发现它只发生在如图所示的IF上下文中。好的,现在添加了循环,情况就大不相同了。。您需要延迟扩展或仅使用cd
这对于批处理文件来说不是“奇怪的行为”。请参阅“”,并删除重复的问题。