我正在尝试根据操作系统运行安装在不同位置的程序。我正在通过批处理文件运行该程序。我看到很多帖子告诉双重引号但它不起作用。
if exist "C:\Program Files\Manufacturer\"
(
copy F:\Manufacturer\Manufacturer.exe "C:\Program Files\Manufacturer\Manufacturer.exe"
c:
cd "C:\Program Files\Manufacturer\"
)
else
(
copy F:\Manufacturer\Manufacturer.exe "C:\Program Files (x86)\Manufacturer\Manufacturer.exe"
c:
cd "C:\Program Files (x86)\Manufacturer\"
)
start Manufacturer.exe
正确的语法是什么?
答案 0 :(得分:4)
您需要将括号放在与命令相同的行上。
if exist "C:\Program Files\Manufacturer\" (
copy F:\Manufacturer\Manufacturer.exe "C:\Program Files\Manufacturer\Manufacturer.exe"
c:
cd "C:\Program Files\Manufacturer\"
) else (
copy F:\Manufacturer\Manufacturer.exe "C:\Program Files (x86)\Manufacturer\Manufacturer.exe"
c:
cd "C:\Program Files (x86)\Manufacturer\"
)
答案 1 :(得分:0)
当我遇到这个问题时,我通常采用转换路径的方法来反映旧的8.3文件类型,你可以通过包含空格的路径的前6个字母并附加到结束〜1,例如:
如果你想进入C:\ Program Files \ MyApp路径,你可以输入C:\ Progra~1 \ MyApp
我还没有在Windows 10上对此进行过测试,但我的猜测是应该仍然有效,希望有所帮助。
答案 2 :(得分:0)
假设你有这个,这是令人讨厌的,因为它有一个空格。
SET MSBUILDDIR = C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \
你不能使用它。
IF NOT EXIST "%MSBUILDDIR%nul" goto MissingMSBuildToolsPath
而是在命令后使用&&
来查明ERRORLEVEL
是否为0
dir "%MSBUILDDIR%msbuild.exe" > nul && echo it exists
或者,在命令后使用||
来查明ERRORLEVEL
是否不是0
dir "%MSBUILDDIR%msbuild.exe" > nul || echo does not exist