例如,在 Windows 7 上 mklink
可从 cmd.exe /C mklink
获得,但在 Windows XP 上则不然。
除了执行 cmd.exe /C mklink
并尝试读取 errorlevel
之外,是否有更简单的方法来测试 cmd.exe 是否支持命令?
谢谢!
最佳答案
ERRORLEVEL
的 cmd
不是命令存在的好指标,因为如果命令不存在或失败,它会被设置为非零值,这可能会使您的测试失败。
或者,您可以执行以下操作之一:
检查操作系统版本
就像阿德里亚诺在评论中建议的那样,可以像这样检查 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.
)
或类似的东西。不过,您需要确保处理所有必要的操作系统版本。
测试运行命令并检查
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
语句。如果 if errorlevel 9009
>=9009,则 ERRORLEVEL
有效,因此需要第二个 if
-语句来排除 ERRORLEVEL
>9009 的情况)。我更喜欢第二种解决方案,因为它预计适用于所有版本的 Windows。
关于batch-file - 如何测试cmd.exe命令是否存在?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12624044/