当我在批处理变量中有一个 space 时,为什么我会得到三个输出?
Why am I getting three outputs when I have a space in batch variable?
该代码旨在成为 test.tx 文件的简单符号 link 创建者,但是当我 运行 它时,我得到三个输出:
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
。
这是三个单独的 space 分隔字符串,因此 for
将 do
echo
三次,每个字符串一次。
如果您希望cmd
将字符串解释为单个实体,您可以
1/ 赋值时引用字符串,set "src="H:\Backups\Batch Files\File System\test.txt""
或
2/ 使用时引用值FOR %%A IN ("%src%") DO (...
该代码旨在成为 test.tx 文件的简单符号 link 创建者,但是当我 运行 它时,我得到三个输出:
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
。
这是三个单独的 space 分隔字符串,因此 for
将 do
echo
三次,每个字符串一次。
如果您希望cmd
将字符串解释为单个实体,您可以
1/ 赋值时引用字符串,set "src="H:\Backups\Batch Files\File System\test.txt""
或
2/ 使用时引用值FOR %%A IN ("%src%") DO (...