批处理文件 - 语法不正确(进入目录)

时间:2012-12-31 11:34:20

标签: batch-file batch-processing cmd

我正在写一个批处理脚本进入文件夹内部如果它存在则做某件事,如果它不做其他的

我的层次结构如下: -

  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

1 个答案:

答案 0 :(得分: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
)