以下执行IF和ELSE块
@Override
public void onCheckedChanged(RadioGroup group, int id) {
string text = ((TextView)group.findViewById(id)).getText();
Toast toast = Toast.makeText(this, text, duration);
toast.show();
}
结果如下:
C:\ temp>设置sqlpackage_path = C:\ Program Files(x86)\ Microsoft SQL 服务器\ 130 \ DAC \ BIN \ sqlpackage.exe
C:\ temp>如果存在C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ DAC \ bin \ sqlpackage.exe(
C:\ temp> echo C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ DAC \ bin \ sqlpackage.exe存在C:\ Program Files (x86)\ Microsoft SQL Server \ 130 \ DAC \ bin \ sqlpackage.exe存在
C:\ temp> echo C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ DAC \ bin \ sqlpackage.exe不存在C:\ Program Files (x86)\ Microsoft SQL Server \ 130 \ DAC \ bin \ sqlpackage.exe不存在
当我尝试在IF行的“%sqlpackage_path%”周围添加引号时,收到此消息:
\微软此时出人意料
检查此文件是否存在的正确语法是什么?
答案 0 :(得分:1)
您的环境变量的计算结果为包含括号的字符串。这些作为语法的一部分。您需要将它们括在引号中,尤其是在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_path!
代替{{ 1}}。
答案 1 :(得分:0)
@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
保持对实际路径名的评估,直到最后一刻。
基本问题是变量中的)
会关闭if-true指令。