更改当前工作目录后,批处理文件%cd%保持不变

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

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

更改当前工作目录后,批处理文件%cd%保持不变

我从dir3调用批处理文件。

如果代码如下,就可以正常工作:

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

更改当前工作目录后,批处理文件%cd%保持不变

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

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

更改当前工作目录后,批处理文件%cd%保持不变

iCMS 回答:更改当前工作目录后,批处理文件%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
)
本文链接:https://www.f2er.com/1985233.html

大家都在问