加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

batch-file – 如何测试cmd.exe命令是否存在?

发布时间:2020-12-14 03:52:43 所属栏目:Windows 来源:网络整理
导读:例如,在 Windows 7上,mklink可以从cmd.exe / C mklink获得,但是在Windows XP上则没有. 除了执行cmd.exe / C mklink并尝试读取errorlevel之外,还有一种更简单的方法来测试cmd.exe是否支持命令? 谢谢! 解决方法 cmd的ERRORLEVEL不是命令存在的良好指示器,因
例如,在 Windows 7上,mklink可以从cmd.exe / C mklink获得,但是在Windows XP上则没有.

除了执行cmd.exe / C mklink并尝试读取errorlevel之外,还有一种更简单的方法来测试cmd.exe是否支持命令?

谢谢!

解决方法

cmd的ERRORLEVEL不是命令存在的良好指示器,因为如果命令不存在或者它失败,则将其设置为非零值,这可能会导致测试失败.

或者,您可以执行以下操作之一:

检查操作系统版本

就像Adriano在评论中建议的那样,可以检查Windows的版本,如下所示:

set mklink_supported=true
ver | find "XP" >nul 2>&1 && set mklink_supported=false

或者像这样:

set mklink_supported=false
echo %vers% | find "Windows 7" >nul 2>&1 && set mklink_supported=true

然后:

if %mklink_supported%==false (
    echo 'mklink' is not supported on this operating system.
)

或者沿着这些方向的东西.但是,您需要确保正在处理所有必需的操作系统版本.

Testrun命令并检查ERRORLEVEL

或者,您可以尝试直接运行mklink.如果找不到,则ERRORLEVEL设置为9009:

@echo off
mklink >nul 2>&1
if errorlevel 9009 if not errorlevel 9010 (
    echo 'mklink' is not supported on this operating system.
)

请注意,有两个if语句.如果错误级别9009在ERRORLEVEL> = 9009时有效,那么在ERRORLEVEL> 9009时需要第二个if语句来排除这种情况.

我更喜欢第二种解决方案,因为它可以在所有版本的Windows上运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读