更改当前工作目录后批处理文件 %cd% 没有改变

batch file %cd% doesn't changed after changing current working directory

我写了一个批处理文件 (windows os),它使用 %CD% 打印当前工作目录,但即使我更改了当前目录,%CD% 的值也没有改变.在“IF”语句的上下文中,这种奇怪的行为发生在我身上。

这是文件夹和批处理文件的快照Test.bat

我从 dir3 调用批处理文件。

如果代码如下:

@echo off 
@echo %CD%
cd /d c:\temp\dir1
@echo %CD%

但是在下面的代码中它不起作用,如提示 window 的快照所示。即使在更改当前工作目录后,它也会打印第一个 - c:\temp\dir3.

@echo off 
if exist "c:\bom" (
   @echo file exist already
) else (
@echo %CD%
cd /d c:\temp\dir1
@echo %CD%
)

所以你这里缺少delayedexpansion。这里有两种方法:

@echo off 
setlocal enabledelayedexpansion
if exist "c:\bom" (
  @echo file exist already
) else (
  @echo !CD!
  cd /d c:\temp\dir1
  @echo !CD!
)

或者只使用 cd 而不 echo 变量 %cd%

@echo off 
if exist "c:\bom" (
  @echo file exist already
) else (
  cd
  cd /d c:\temp\dir1
  cd
)