Batch file IF/ELSE执行两个块
下面执行IF和ELSE块Batch file IF/ELSE执行两个块,batch-file,Batch File,下面执行IF和ELSE块 set sqlpackage_path=%ProgramFiles(x86)%\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe if exist %sqlpackage_path% ( echo %sqlpackage_path% exists ) else ( echo %sqlpackage_path% does not exist ) 结果是: C:\temp>set-sqlpackage\u p
set sqlpackage_path=%ProgramFiles(x86)%\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe
if exist %sqlpackage_path% (
echo %sqlpackage_path% exists
) else (
echo %sqlpackage_path% does not exist
)
结果是:
C:\temp>set-sqlpackage\u path=C:\Program Files(x86)\Microsoft SQL
服务器\130\DAC\bin\sqlpackage.exe
C:\temp>如果存在C:\Program Files(x86)\Microsoft SQL
服务器\130\DAC\bin\sqlpackage.exe(
C:\temp>echo C:\Program Files(x86)\Microsoft SQL
服务器\130\DAC\bin\sqlpackage.exe存在C:\Program文件
(x86)\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe存在
C:\temp>echo C:\Program Files(x86)\Microsoft SQL
服务器\130\DAC\bin\sqlpackage.exe不存在C:\Program文件
(x86)\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe不存在
当我尝试在IF行的“%sqlpackage\u path%”周围加引号时,我收到以下消息:
\微软此时出人意料
检查此文件是否存在的正确语法是什么?您的环境变量的计算结果是一个包含括号的字符串。这些括号是语法的一部分。您需要将它们括在引号中,尤其是在if和else块中:
set sqlpackage_path=%ProgramFiles(x86)%\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe
if exist "%sqlpackage_path%" (
echo "%sqlpackage_path%" exists
) else (
echo "%sqlpackage_path%" does not exist
)
如果需要避免在echo
命令的输出中使用引号,请使用延迟扩展:在文件开头添加setlocal enabledelayedexpansion
,并使用!sqlpackage\u path!
而不是%sqlpackage\u path%”
将实际路径名的计算保留到最后一刻
基本问题是变量中的)
关闭if-true指令
@ECHO Off
SETLOCAL
set "sqlpackage_path=%ProgramFiles(x86)%\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe"
FOR /f "tokens=1*delims==" %%a IN ('set sqlpackage_path') DO IF /i "%%a"=="sqlpackage_path" (
if exist "%%b" (
echo %%b exists
) else (
echo %%b does not exist
)
)
GOTO :EOF