我有一个非常基本的批处理脚本,它检查一个传入的文件夹,并根据文件类型移动文件到指定位置。现在,出现带有"&"的文件夹会导致脚本失效。你该如何解决这个问题?我在网上找不到明显的答案。
robocopy.exe "%location%" "%destination%" /E /tee /LOG+:C:\Users\etc\Log.txt
编辑2:
好的,感谢下面的评论和大量的试错,我发现这是引号的问题。现在,经过一番试错,我找到了一组引号和无引号的组合,它能够工作,但我不知道为什么。如果有人能够解释为什么这样做有用,而其他组合则没有用,我会很感激...batch真的很奇怪。
输入 -> Test.bat "C:\etc\etc\"
- 路径需要加引号
set location=%1
- 无需引号
set type="%~2"
- 需要引号
set destination="C:\Users\xxxx\Desktop\Destination"
- 需要引号
set logfile="C:\Users\xxxx\Desktop\robolog.txt"
- 需要引号
robocopy.exe %location% "%destination%" /E /tee /LOG+:%logfile%
- 源路径不需要引号,但目标路径需要???
引号是否会互相抵消?为什么增加引号会使其无法工作,但只在某些情况下才有效呢? 同时,使用%~1 vs %1 vs "%1" vs "%~1"会产生不同的结果。
robocopy
之前。也许与您如何分配location
和destination
变量有关。像 @Dany Bee 的答案中一样,在赋值周围加上双引号SET "var=value"
,这样就可以解决问题了。(在robocopy
命令行中仍需要双引号。) - Andriy M%location%
或%destination%
是否已经被引用。 - LS_ᴅᴇᴠ