有没有人知道Windows命令行中等价于$?
的变量?是否存在这样的变量?
编辑:$?
是UNIX变量,它保存了上一个进程的退出代码。
有没有人知道Windows命令行中等价于$?
的变量?是否存在这样的变量?
编辑:$?
是UNIX变量,它保存了上一个进程的退出代码。
%ERRORLEVEL% 返回最近使用命令的错误代码。非零值通常表示错误。
http://technet.microsoft.com/en-us/library/bb490954.aspx
$? 如果上一操作成功,则包含True,否则为False。并且
$LASTEXITCODE 包含上一个Win32可执行文件执行的退出代码。
http://blogs.msdn.com/powershell/archive/2006/09/15/ErrorLevel-equivalent.aspx
$? 扩展为最近执行的前台程序的退出状态代码。
很抱歉翻出一个老的帖子,但值得注意的是%ERRORLEVEL%并没有在每个命令中被重置。即使经过几行后续且成功的批处理代码,您仍然可以测试“正面”的错误级别。
您可以使用ver
可靠地将errorlevel重置为干净的状态。此示例适用于UnxUtils以获取更类似Linux的目录列表。尽管看起来在最后进行重置可能是多余的,但如果我需要从另一个脚本中调用此脚本,则不是如此。
:------------------------------------------------------------------------------
: ll.bat - batch doing its best to emulate UNIX
: Using UnxUtils when available, it's nearly unix.
:------------------------------------------------------------------------------
: ll.bat - long list: batch doing its best to emulate UNIX
: ------------------------------------
: zedmelon, designer, 2005 | freeware
:------------------------------------------------------------------------------
@echo off
setlocal
: use the UnxUtil ls.exe if it is in the path
ls.exe -laF %1 2>nul
if errorlevel 1 (
echo.
echo ----- ls, DOS-style, as no ls.exe was found in the path -----
echo.
dir /q %1
)
: reset errorlevel
ver>nul
endlocal
请随意使用。如果您还没有看过UnxUtils,请查看它们。
@echo off
run_some_command
if errorlevel 2 goto this
if errorlevel 1 goto that
goto end
:this
echo This
goto end
:that
echo That
goto end
:end
%错误级别%