全新的脚本编写,试图通过搜索网络找到解决方案,但我很难过,所以请求帮助!
我正在尝试将robocopy与变量一起用作源和目标,每个变量都不同,但我无法获得正确的语法。
我能够正常工作的硬编码是:
robocopy C:\Users\me\Documents\a C:\Users\me\Documents\b
但我不能让它与变量一起工作。在阅读完之后,我已经尝试了下面的所有变体“和%in / out,有和没有Set,并且没有一个有效。
Set src="C:\Users\me\Documents\a"
Set dest="C:\Users\me\Documents\b"
robocopy %src% %dest%
希望这清楚地解释我正在尝试做什么,如果不要求澄清。 提前感谢您的帮助。
答案 0 :(得分:4)
set "src=C:\Users\me\Documents\a"
set "dest=C:\Users\me\Documents\b"
robocopy "%src%" "%dest%"
你的sintax没什么不好的。这种方式“更强大”或更标准或更习惯,......
但是robocopy不是复制而不是xcopy。您要求robocopy从源复制到目标已更改或新文件。如果没有更改,robocopy将不会复制任何内容。如果你已经尝试并且它有效,....如果没有变化,没有文件复制。
您还没有要求robocopy复制子目录。因此,如果源目录中没有文件,则不会复制任何文件。
答案 1 :(得分:4)
我发现Robocopy对语法的任意性很敏感。我发现了一个与你类似的问题:
此代码有效:
Set Today=%DATE:~0,3%
Robocopy "G:\folder A" "U:\%Today%\folder A" ^
/S /XJD /R:25 /W:4 /NP /copyall ^
/LOG:"U:\%Today%\FolderALog.txt"
IF ERRORLEVEL 8 goto Badend
这个(结构良好的)代码不起作用
Set Today=%DATE:~0,3%
Set source="G:\folder A"
Set target="U:\%Today%\folder A"
Set Logname="U:\%Today%\FolderALog.txt"
Echo Source is %Source%
Echo Target is %Target%
Echo logfile named %Logname%
Pause
Robocopy %source% %target% ^
/S /XJD /R:25 /W:4 /NP /copyall ^
/LOG:%Logname%
Pause
但是,在第二个例子中,从命令行中取出第一个延续,它可以工作:
Set Today=%DATE:~0,3%
Set source="G:\folder A"
Set target="U:\%Today%\folder A"
Set Logname="U:\%Today%\FolderALog.txt"
Echo Source is %Source%
Echo Target is %Target%
Echo logfile named %Logname%
Pause
Robocopy %source% %target% /S /XJD /R:25 /W:4 /NP /copyall ^
/LOG:%Logname%
Pause
自从DOS时代以来,我一直在使用插入符号(^)作为批处理命令作业中的延续字符,但是在这个实例中,解析器尝试将它与前一个变量连接起来并且作业因为系统认为我而死亡我试图命名一个文件夹“U:\%Today%\ folder A ^”。所以顺便说一下 - 你会继续尝试,直到有效。 故障排除技术:对新定义的变量进行Echos然后暂停,可以检查拼写错误和错误引号。最后的暂停使您有足够的时间来读取错误代码,如果有的话。我遇到的另一件事是无意中插入了一个不可打印的字符来代替用引号括起来的路径中的空格。 RoboCopy是非常强大的,非常值得偶尔修补敏捷的语法。
答案 2 :(得分:0)
如果您尝试使用.bat,代码将如下所示:
Set src="C:\Users\me\Documents\a"
Set dest="C:\Users\me\Documents\b"
robocopy.exe %src% %dest%
您忘了放.exe
答案 3 :(得分:0)
试试这种方式
Set src=C:\Users\me\Documents\a
Set dest=C:\Users\me\Documents\b
robocopy %src% %dest% /E
/ E - 用于复制包含空子文件夹的子文件夹
答案 4 :(得分:0)
看起来像一个老问题,但是我今天自己遇到了这个问题,并通过在set命令中使用双斜杠解决了这个问题:
Set src="C:\\Users\\me\\Documents\\a"
Set dest="C:\\Users\\me\\Documents\\b"
robocopy %src% %dest%
答案 5 :(得分:-2)
老兄尝试XCOPY命令,它肯定会起作用!
示例:
xcopy“C:\ Users \ me \ Documents \ a”“C:\ Users \ me \ Documents \ b”
它会询问目的地是文件夹还是文件,所以一旦你选择了文件夹(dir)就会复制它!
希望它有所帮助! :d