Dua*_* Le 8 dos batch-file windows-scripting
我还没有找到一种方法来获取rmdir的错误代码(如果返回).好像MS-DOS内部命令不会返回错误代码.有人可以证实吗?
使用这些命令的脚本如何知道命令是成功还是失败以决定下一步?最简单的方法是读取返回代码(如果返回).
提前致谢.
pax*_*blo 16
不,似乎没有.如果你echo %errorlevel%成功或失败后rmdir,你会遇到0两种情况:
c:\pax> mkdir qqq
c:\pax> rmdir qqq
c:\pax> echo %errorlevel%
0
c:\pax> rmdir qqq
The system cannot find the file specified.
c:\pax> echo %errorlevel%
0
Run Code Online (Sandbox Code Playgroud)
对于该特定用例,您最好在之后检查目录是否存在:
if exist dodgy\. rmdir dodgy
if exist dodgy\. echo dodgy directory still exists
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果你调用一个单独的副本cmd.exe来执行操作,你可以获得错误级别:
c:\pax> mkdir qqq
c:\pax> cmd /c rmdir qqq
c:\pax> echo %errorlevel%
0
c:\pax> cmd /c rmdir qqq
The system cannot find the file specified.
c:\pax> echo %errorlevel%
2
Run Code Online (Sandbox Code Playgroud)
但是,我不相信这比删除它后简单地检查目录已经消失更好,因为它需要你启动一个全新的命令解释器.
md test
2>nul rmdir test&&echo ok||echo err
2>nul rmdir test&&echo ok||echo err
Run Code Online (Sandbox Code Playgroud)
这打印第一个rmdir可以正常,第二个可以打印错误.
rmdir是一个内部cmd.exe命令,因此%errorlevel%可能不会更新.