检查Windows 10中的批处理文件中是否存在包含空格的文件

时间:2015-12-28 06:02:09

标签: batch-file windows-10

我正在尝试根据操作系统运行安装在不同位置的程序。我正在通过批处理文件运行该程序。我看到很多帖子告诉双重引号但它不起作用。

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

正确的语法是什么?

3 个答案:

答案 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