如果我做:
set dir1= %ProgramFiles%\Backup\files
set dir2= %ProgramFiles%\Backup\settings
set backup = B:\backup
start /b combine_file.exe %dir1% %dir2%
上面的例子只看到第一部分,即
C:\program
并且还不包括空间。如果我这样做
echo %dir1%
,它将返回正确的路径。你会把 ""
放在哪里解决这个问题?同样的问题发生,当你做一些类似的事情时:
set /p somepath=Enter Path
start /b combine_file.exe %dir1%\%somepath%
由于那个空间,你会得到一个错误,但是当试图放置
""
时因此,您经常会遇到另一种类型的错误。在测试中,我知道该示例确实有效,就像您选择一个没有空格的目录或手动放入 ""
一样在 set /p blah=
这工作正常。很确定我只是缺少一个简单的开关或诸如
/I
之类的东西.
最佳答案
set "dir1=%ProgramFiles%\Backup\files"
set "dir2=%ProgramFiles%\Backup\settings"
set "backup=B:\backup"
start /b combine_file.exe "%dir1%" "%dir2%"
set /p "somepath=Enter Path"
start /b combine_file.exe "%dir1%\%somepath%"
通常,在变量分配上使用引号以确保正确处理空格,但不要在值中包含引号。因此,变量中的所有路径都不包含引号。当需要使用该值时,请引用该变量。
关于batch-file - 批处理脚本 - 带空格的变量字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456676/