4

所以我有一个非常基本的批处理脚本,它查看传入的文件夹并根据文件类型将文件移动到我想要的位置。现在显示带有“&”的文件夹会破坏它。你如何解决这个问题?我在网上找不到明显的答案。

robocopy.exe "%location%" "%destination%" /E /tee /LOG+:C:\Users\etc\Log.txt

编辑2:

好的,感谢下面的评论和一堆线索和错误,我认为这是一个报价问题。现在经过一堆试验和错误发现引号组合并且没有引号有效,但我不知道为什么。如果有人能够解释为什么这行得通而其他组合不起作用,我会很感激哈哈……批次太奇怪了。

Input -> 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" 产生不同的结果。

4

1 回答 1

9

我测试了这个:

@ECHO OFF &SETLOCAL
SET "location=this & that"
SET "destination=more & more"
robocopy.exe "%location%" "%destination%" /E /tee /LOG+:"%destination%\Log.txt"

我没有错误:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Wed Jul 31 09:59:55 2013

   Source : C:\TEST\this & that\
     Dest : C:\TEST\more & more\

    Files : *.*

  Options : *.* /TEE /S /E /COPY:DAT /R:1000000 /W:30 

------------------------------------------------------------------------------

------------------------------------------------------------------------------

                Total    Copied   Skipped  Mismatch    FAILED    Extras
     Dirs :         1         0         1         0         0         0
    Files :        81        81         0         0         0         1
    Bytes :    28.3 k    28.3 k         0         0         0         0
    Times :   0:00:00   0:00:00                       0:00:00   0:00:00

    Speed :              184585 Bytes/sec.
    Speed :              10.562 MegaBytes/min.

    Ended : Wed Jul 31 09:59:55 2013
于 2013-07-31T08:02:20.503 回答