【问题标题】:What is the equivalent to $? in Windows?什么等价于美元?在 Windows 中?
【发布时间】:2010-11-05 08:53:12
【问题描述】:

有人知道 Windows 命令行中的 $? 是什么吗?有吗?

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

【问题讨论】:

  • 如果没有上下文,问题就没有意义
  • 你不应该为 Windows 标记这个吗?
  • 他说的是保存最后一个进程退出代码的 Unix shell 变量。
  • 你是指找到登录用户吗?
  • @Duck:对不起,我遇到了键盘问题,所以在尝试从建议列表中选择它时,我不小心发送了一些错误的 TAB+ENTER 组合。 @birdlips:不,我不是。刚刚更新了问题

标签: windows linux command-line


【解决方案1】:

你想检查%ERRORLEVEL%的值。

【讨论】:

    【解决方案2】:

    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 脚本

    $?展开为退出状态码 最近执行的前台 程序。

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

    【讨论】:

      【解决方案3】:

      很抱歉挖掘了一个旧线程,但值得注意的是 %ERRORLEVEL% 不会被 every 命令重置。在几行后续且成功的批处理代码之后,您仍然可以测试“肯定”的错误级别。

      您可以使用ver 可靠地将错误级别重置为干净状态。此示例与 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,请查看它们。

      【讨论】:

        【解决方案4】:
        @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
        

        【讨论】:

        • 注意“if errorlevel”操作测试errorlevel变量是否等于大于给定的数字。因此,如果您需要测试多个可能的值,则必须按降序检查数字(如示例所示)。
        【解决方案5】:

        %errorlevel%

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-02
          • 2020-02-25
          相关资源
          最近更新 更多