当我在批处理变量中有空格时,为什么我得到三个输出?

时间:2017-09-17 18:29:33

标签: batch-file filesystems

该代码旨在成为test.tx文件的简单符号链接创建者,但是当我运行它时,我得到三个输出:

mklink "H:\Backups\Batch Files\Batch" "H:\Backups\Batch Files\File System\test.txt"
mklink "H:\Backups\Batch Files\File" "H:\Backups\Batch Files\File System\test.txt"
mklink "H:\Backups\Batch Files\test.txt" "H:\Backups\Batch Files\File System\test.txt"

脚本:

@Echo off

set "src=H:\Backups\Batch Files\File System\test.txt"
set "des=H:\Backups\Batch Files"

FOR %%A IN (%src%) DO (echo mklink "%des%\%%~nxA" "%src%")

timeout 30

1 个答案:

答案 0 :(得分:2)

分配给src的值为H:\Backups\Batch Files\File System\test.txt

这是三个独立的以空格分隔的字符串,因此fordo echo三次,每个字符串一次。

如果您希望cmd将字符串解释为单个实体,则可以

1 /在分配时引用字符串,set "src="H:\Backups\Batch Files\File System\test.txt""

2 /使用FOR %%A IN ("%src%") DO (...

时引用该值