批处理脚本 - 带空格的可变字符串

时间:2014-01-30 12:33:14

标签: batch-file

如果我这样做:

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的东西。

3 个答案:

答案 0 :(得分:7)

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%"

通常,在变量asignation上使用引号以确保正确处理空格,但不包括值内的引号。因此,变量中的所有路径都不包含引号。当需要使用该值时,引用变量。

答案 1 :(得分:2)

start /b combine_file.exe "%dir1%" "%dir2%"应该有效

答案 2 :(得分:0)

您可以尝试在""命令上放置SET

set "dir1=%ProgramFiles%\Backup\files"
set "dir2= %ProgramFiles%\Backup\settings"
set /p "somepath=Enter Path"