1

我正在编写一个批处理脚本来进入一个文件夹,如果它存在的话,如果它不做其他事情,就做某件事

我的层次结构如下: -

  C:\Validation\docs\chm\help.chw

我想转到这个“help.chw”文件,这就是我正在做的事情并得到错误

IF EXIST docs (
CD docs echo curr dir = %CD% goto imagefolder 
) 

IF EXIST docs (
CD docs echo curr dir = %CD% goto imagefolder 
) 

ECHO Please include 'docs' folder in the current working directory
ECHO.
ECHO The program would close now , restart the batch file after making the changes cited above
ECHO.
goto exit

这是我写的

 IF EXIST docs (
 CD "docs"
 echo curr dir = %CD%
 goto imagefolder

)

它给

 C:\Validation MSI
4

1 回答 1

2

你正在尝试这显然cddocs echo curr dir = %CD% goto imagefolder行不通的。

cd在和 其他命令之间放置一条线。

IF EXIST docs (
CD docs
echo curr dir = %CD%
goto imagefolder 
) else (
echo Folder not found
)

IF EXIST docs (
CD docs
echo curr dir = %CD%
goto imagefolder 
) else (
echo Folder not found
)

我也将您的goto行放在单独的行上,因为我假设它们不是发送给echo.

更新

您的代码没有回显实际当前目录的原因是因为cd变量在if括号内,这意味着里面的任何变量都是在运行时评估的,所以如果它们在括号结束之前发生变化,则值将与以前相同在括号之前,在这种情况下 - 父目录。

修复是启用延迟扩展,这将在到达它们时评估它们,而不是立即评估 while 块。

setlocal enabledelayedexpansion
IF EXIST docs (
cd docs
echo curr dir = !CD!
goto imagefolder
)
于 2012-12-31T11:42:13.093 回答