什么相当于$?在Windows?

时间:2009-06-23 23:44:59

标签: windows linux command-line

有人知道Windows命令行中与 $? 相同的内容吗?有没有?

编辑: $?是UNIX变量,它保存最后一个进程的退出代码

5 个答案:

答案 0 :(得分:11)

您想要检查%ERRORLEVEL%的值。

答案 1 :(得分:9)

Windows批处理文件

  

%ERRORLEVEL%返回错误代码   最近使用的命令。非   零值通常表示错误。

http://technet.microsoft.com/en-us/library/bb490954.aspx

Windows Powershell

  

$?     如果上次操作成功则包含True,否则包含False。和

     

$ LASTEXITCODE     包含最后一次Win32可执行文件执行的退出代码。

http://blogs.msdn.com/powershell/archive/2006/09/15/ErrorLevel-equivalent.aspx

Cygwin Bash Scripting

  

$?扩展到退出状态代码   最近执行的前景   程序

http://unix.sjcc.edu/cis157/BashParameters.htm

答案 2 :(得分:2)

很抱歉疏通旧线程,但值得注意的是%ERRORLEVEL%不会通过每个命令重置。在几行后续 - 并且成功 - 批处理代码之后,您仍然可以为errorlevel测试“肯定”。

您可以使用ver将errorlevel可靠地重置为干净状态。此示例适用于UnxUtils以获取更多Linux-ish目录列表。重置可能在最后看起来无关紧要,但如果我需要从另一个调用此脚本则不行。

:------------------------------------------------------------------------------
:  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,请查看'em out。

答案 3 :(得分:1)

@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

答案 4 :(得分:0)

%ERRORLEVEL%