我正在写一个批处理脚本进入文件夹内部如果它存在则做某件事,如果它不做其他的
我的层次结构如下: -
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
答案 0 :(得分:2)
您正试图cd
到docs 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
)