【问题标题】:How to check if a command is available in a Windows shell?如何检查命令在 Windows shell 中是否可用?
【发布时间】:2012-12-04 06:10:46
【问题描述】:

要检查一个命令在 bash shell 中是否可用,我通常会这样做:

command -v $COMMAND >/dev/null 2>&1 || {
    echo >&2 "Error: this script requires the command '$COMMAND' to be available"
    exit 1
}

Windows 中的等价物是什么?

【问题讨论】:

  • 你是说PowerShell还是命令提示符?
  • 命令提示符 :-) 但是,如果您发布有关 power shell 的答案,我会 +1 只是因为我会学到一些东西。
  • 你的意思是检查bash命令(例如:mingw bash)还是CMD命令?
  • 一个 cmd 命令。使用 bash 我会使用相同的 sn-p。

标签: shell command


【解决方案1】:

你可以使用非常相似的东西

%command% >nul 2>&1 || (
    echo "Error: command not found"
    exit /b 1
)

当然,这实际上会执行命令,但是如果没有适当的参数,大多数命令将什么都不做。如果您想更确定,可以使用%command% /? >nul 2&1。这将尝试为命令带来帮助页面,而不执行它

更新: 为避免完全执行命令,请考虑where.exe。它与 Vista 和 Windows 7 捆绑在一起。对于其他操作系统,您可以下载它。请参考this post on how to download it

一旦你拥有它,你可以使用/Q 开关来运行它以避免额外的输出。返回码 0 表示找到命令。我发现where 命令需要您提供扩展名。

在另一端,有一个 lengthy discussion here 关于批处理“单线”,在没有指定扩展名的情况下工作(但在您指定扩展名时实际上会失败)

【讨论】:

  • 这是一个有趣的选择。并不总是想要,但仍然很有用。
  • 我已经更新了我的答案以包括不执行您正在测试的命令的替代方案
猜你喜欢
  • 2016-10-20
  • 2011-09-07
  • 1970-01-01
  • 2011-11-05
  • 2016-01-08
  • 2011-11-23
  • 2019-02-06
  • 1970-01-01
  • 2015-04-07
相关资源
最近更新 更多