Windows中的文件redirect和%errorlevel%

比方说,我们想用下面的命令在windows中创build一个空文件:

type nul > C:\does\not\exist\file.txt 

该目录不存在,所以我们得到的错误:

 The system cannot find the path specified 

如果你打印出%errorlevel%的输出是:

 echo %errorlevel% 0 

然而,这个命令并不成功!

我注意到,如果您使用redirect,Windows不会设置最后一个命令的%errorlevel%

有没有解决的办法?

您可以使用以下内容:

 C:\>type nul > C:\does\not\exist\file.txt && echo ok || echo fail The system cannot find the path specified. fail C:\>echo %errorlevel% 1 

我总是认为&&和|| 运营商使用ERRORLEVEL,但显然不是。

非常好奇,只有在使用||时,ERRORLEVEL才会在redirect错误之后设置 运营商。 我从来不会猜到 如果不是你的优秀问题,我也不会费心去testing。

如果你想要做的就是在redirect失败时设置ERRORLEVEL,那么当然你可以简单地做:

 type nul > C:\does\not\exist\file.txt || rem