检查是否在批处理文件中正确执行了更改目录命令windows
Check if change directory command is executed properly in batch file windows
我正在处理一个批处理文件脚本,我的要求是从当前目录遍历文件夹并删除一些文件。
如果找不到路径,它会开始从错误的位置删除文件。
这是我的脚本
set BuildPath="%CD%"
set DrivePath="%CD:~0,3%"
cd "%BuildPath%\Mac\Data\"
del * /S /Q
rmdir /S /Q "%BuildPath%\Mac\Data\"
现在上面的脚本会发生什么,如果 "%BuildPath%\Mac\Data\" 没有找到它会开始从错误的文件夹中删除文件,因为 cd命令无效。
我想检查的是更改目录是否成功。如果不成功,那么我不想执行任何操作。
@ECHO Off
SETLOCAL
PUSHD u:\sourcedir
set "BuildPath=%CD%"
set "DrivePath=%CD:~0,3%"
cd "%BuildPath%\Mac\Data"
IF ERRORLEVEL 1 ECHO fail cd
IF /i "%cd%" neq "%BuildPath%\Mac\Data" echo FAIL&GOTO :EOF
ECHO del * /S /Q
ECHO rmdir /S /Q "%BuildPath%\Mac\Data\"
popd
GOTO :EOF
注意:U:\sourcedir
是我的测试目录。
如果 cd
成功,errorlevel
将是 0
,因此 fail cd
消息将 不会 发出。 cd
更改后将包含与指定相同的路径(我省略了结尾的反斜杠)。
另一方面,如果更改不成功(目录不存在),errorlevel
将变为1
并产生fail cd
消息,并且cd
将不符合规定。
这里有两种方法 - errorlevel
和 compare-directory-name
。这是使用 set "var=value"
语法分配字符串的原因,其中可以控制兔子耳朵的数量和位置。
您的脚本在设置根本不使用的变量之前,不必要地将变量设置为现有变量的名称。然后在删除所有目录之前删除当前树中的所有文件,当单独删除目录时应该这样做。
以下单行批处理脚本应该与您的脚本执行相同的操作,并且只有在该位置存在时才这样做!
@CD /D "%__CD__%Mac\Data" 2>Nul && RD /S /Q "%__CD__%Mac\Data">Nul 2>&1
&&
运算符后面的命令仅当 运行 之前的命令返回成功时才有效。
我正在处理一个批处理文件脚本,我的要求是从当前目录遍历文件夹并删除一些文件。
如果找不到路径,它会开始从错误的位置删除文件。
这是我的脚本
set BuildPath="%CD%"
set DrivePath="%CD:~0,3%"
cd "%BuildPath%\Mac\Data\"
del * /S /Q
rmdir /S /Q "%BuildPath%\Mac\Data\"
现在上面的脚本会发生什么,如果 "%BuildPath%\Mac\Data\" 没有找到它会开始从错误的文件夹中删除文件,因为 cd命令无效。
我想检查的是更改目录是否成功。如果不成功,那么我不想执行任何操作。
@ECHO Off
SETLOCAL
PUSHD u:\sourcedir
set "BuildPath=%CD%"
set "DrivePath=%CD:~0,3%"
cd "%BuildPath%\Mac\Data"
IF ERRORLEVEL 1 ECHO fail cd
IF /i "%cd%" neq "%BuildPath%\Mac\Data" echo FAIL&GOTO :EOF
ECHO del * /S /Q
ECHO rmdir /S /Q "%BuildPath%\Mac\Data\"
popd
GOTO :EOF
注意:U:\sourcedir
是我的测试目录。
如果 cd
成功,errorlevel
将是 0
,因此 fail cd
消息将 不会 发出。 cd
更改后将包含与指定相同的路径(我省略了结尾的反斜杠)。
另一方面,如果更改不成功(目录不存在),errorlevel
将变为1
并产生fail cd
消息,并且cd
将不符合规定。
这里有两种方法 - errorlevel
和 compare-directory-name
。这是使用 set "var=value"
语法分配字符串的原因,其中可以控制兔子耳朵的数量和位置。
您的脚本在设置根本不使用的变量之前,不必要地将变量设置为现有变量的名称。然后在删除所有目录之前删除当前树中的所有文件,当单独删除目录时应该这样做。
以下单行批处理脚本应该与您的脚本执行相同的操作,并且只有在该位置存在时才这样做!
@CD /D "%__CD__%Mac\Data" 2>Nul && RD /S /Q "%__CD__%Mac\Data">Nul 2>&1
&&
运算符后面的命令仅当 运行 之前的命令返回成功时才有效。