【问题标题】:Batch command exit批处理命令退出
【发布时间】:2014-04-14 03:16:37
【问题描述】:

我必须将旧的批处理文件重写为 Powershell 脚本。

一行是

directory1\nunit-console.exe file1.dll /xml:results.xml


exit %%ERRORLEVEL%%

我对@9​​87654322@ 位有点困惑

通常,只需在命令行中输入>>exit 并回车即可。它会关闭屏幕。

%%ERRORLEVEL%% 位是什么意思?

谢谢

【问题讨论】:

  • exit %%ERRORLEVEL%% 之前的换行符没有出现在您的帖子中吗?还是全部在一条线上?
  • 有一个断点,“exit %%ERRORLEVEL%%”在单独的一行,谢谢

标签: batch-file exit


【解决方案1】:

在“DOS”shell(即 COMMAND.COM、CMD.EXE)中,变量定义为 %VAR%。 %ERRORLEVEL%代表最后执行的命令的返回值;就像 Bash 或 Perl 中的 $?。

在这种情况下,exit %%ERRORLEVEL%% 似乎是尝试退出批处理脚本,并返回对 nunit-console.exe 的调用的返回值。 (这个脚本看起来很旧,因为exit 和双百分号的需求在 MS-DOS 和 Windows 2000 及更高版本中的更高版本 shell 之间略有变化。)

参见this page,了解exit 在各种shell 版本中的使用方式。

This MS KB article 谈到在批处理文件中使用 % 字符。它是为 MS-DOS 编写的,但大部分相同的原则适用于后来的 shell。

【讨论】:

  • 谢谢!!!这很有帮助。我有另一个问题。我知道结果将是退出 0 或退出 any-positive-number 例如退出 23 退出 0 和退出 23 有什么区别吗?谢谢
  • 我不确定我是否理解这个问题。 “有什么不同”是什么意思?
  • 我的意思是。我刚才在 cmd 上试过 exit 0 和 exit 23 会做同样的事情——关闭 dos 屏幕。当我在关闭dos屏幕旁边输入exit 0和exit 23时有什么区别吗?谢谢!
  • 在 COMMAND.COM 的早期版本(即 MS-DOS v3-6.x)中,exit 如果从批处理脚本执行,则不会关闭 shell。在没有看到脚本的其余部分的情况下,我假设它只是使用来自nunit-console.exe 的返回码返回到 shell。如果您在 Powershell 中重写脚本,则需要保存返回代码并将其用作脚本的退出代码。
猜你喜欢
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2016-11-07
相关资源
最近更新 更多