我目前正在编写一个简短的命令行实用程序来快速安装/卸载程序,并且需要首先确定存在安装文件,以便在不满足条件时提供有意义的错误消息。
我目前编写以下代码
@echo off
setlocal EnableExtensions
echo.
echo 1.Run Program1
echo 2.Summit else
echo 3.Summit else
echo 4.Summit else
echo 5.Summit else
echo.
set /p a= Enter Choice:
if %a%==1(
if exist program1.cmd(
rem program1 exists
echo "Run program1.cmd"
) else(
rem program1 does not exist
echo "program1 does not exist"
))
pause
我目前被告知"命令的语法不正确。"无论Program.cmd是否存在,但我都不明白为什么。
如果在批处理/ cmd文件中无法执行命令,或者我是否从根本上误解了windows命令行语法中的内容,那么是否正在嵌套。
答案 0 :(得分:1)
可以嵌套if
/ for
命令,但cmd
非常非常挑剔空间 - 一个更少或更多的空间可能会崩溃脚本很容易。
这是固定代码。
if "%a%"=="1" (
if exist program1.cmd (
rem program1 exists
echo "Run program1.cmd"
) else (
rem program1 does not exist
echo "program1 does not exist"
)
)
请查看我和您的if
语句语法之间的差异。另外,if %a%==1
可以(并且应该是非强制性的)更改为if "%a%"=="1"
,以便进行更安全的比较。
我们为什么要更改为使用引号("
)?考虑你不小心输入了一个空间。 CMD
会看到:
if ==1 (
它不明白。