str*_*nmn 2 windows batch-file
我想从批处理文件中启动一个Windows可执行文件,其中可执行文件的路径存储在一个变量中.
@echo off
set qtpath=C:\Program Files\Qt\5.7\mingw53_32\bin
set execpath=%qtpath%\windeployqt.exe
echo %execpath%
%execpath% --someparams
Run Code Online (Sandbox Code Playgroud)
不幸的是,执行我的脚本会引发错误:
'C:\Program' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
看起来不知何故,字符串在空间中被终止Program Files.
您应该将代码更改为:
@echo off
set "qtpath=C:\Program Files\Qt\5.7\mingw53_32\bin"
set "execpath=%qtpath%\windeployqt.exe"
echo "%execpath%"
"%execpath%" --someparams
Run Code Online (Sandbox Code Playgroud)
的SPACE,像也TAB,,,;,=和非休息空间(ASCII 0xFF)构成令牌隔板在命令提示cmd.要逃避标记化,请在两者之间包含您的路径"".这也避免了特殊字符,如烦恼^,(和),&,<,>和|.
set命令行中的引号再次避免了特殊字符的问题; 它们不会成为变量值的一部分,因为它们包含整个赋值表达式.
我建议不要将引号包含在变量值(set VAR="some value")中,因为这样会遇到问题,尤其是在由于不需要的(双引号)引用而连接字符串时(例如,echo "C:\%VAR%\file.txt"返回"C:\"some value"\file.txt").