Batch file 为什么我在批处理变量中有一个空格时会得到三个输出?

Batch file 为什么我在批处理变量中有一个空格时会得到三个输出?,batch-file,filesystems,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

该代码旨在为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

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

这是三个单独的空格分隔字符串,因此
for
do
echo三次,每个字符串一次

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

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



2/在(“%src%”)中为%%A使用
时引用值。DO(…

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

这是三个单独的空格分隔字符串,因此
for
do
echo三次,每个字符串一次

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

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


2/引用(“%src%”)中%%A使用
时的值(…

Ahhh!“分隔空间分隔字符串”-太棒了!我没有意识到。我在其他脚本中也遇到过此问题。感谢您的帮助!Ahhh!“分隔空间分隔字符串”-太棒了!我没有意识到。我在其他脚本中也遇到过这个问题。谢谢你的帮助!