我使用以下脚本。当我用“robocopy / mov / mt”换掉“移动”时它不起作用。目标进入一个级别太深,并将文件的名称作为目标文件夹。错误也在下面。
如何使用robocopy代替?我需要多线程。
错误= ERROR 123(0x0000007B)访问源目录D:\ source \ FILE.tif \ 文件名,目录名或卷标语法不正确。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET Source=D:\source
SET Destination=D:\dest
Echo Gather Top 30 files
set SrcCount=0
set SrcMax=31
FOR /F "TOKENS=*" %%a IN ('dir /A-D /O-D /B "%Source%"\*.*') DO (
SET /A SrcCount += 1
if !SrcCount! LEQ %SrcMax% (
MOVE "%source%\%%a" "%destination%
)
)
这就是我的尝试:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET Source=D:\source
SET Destination=D:\dest
Echo Gather Top 30 files
set SrcCount=0
set SrcMax=31
FOR /F "TOKENS=*" %%a IN ('dir /A-D /O-D /B "%Source%"\*.*') DO (
SET /A SrcCount += 1
if !SrcCount! LEQ %SrcMax% (
robocopy /mov /mt "%source%\%%a" "%destination%
)
)
答案 0 :(得分:1)
查看robocopy
的参数:
robocopy /?
------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Wed Jun 01 18:46:40 2016 Usage :: ROBOCOPY source destination [file [file]...] [options] source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). file :: File(s) to copy (names/wildcards: default is "*.*").
第一个参数是源目录,而不是文件。您正在传递文件名。
所以,请改为:
robocopy /mov /mt "%source%" "%destination%" "%%a"
对于/MT
选项,我认为线程用于复制不同的文件,而不是相同的不同部分>文件。
由于你一次只用一个文件调用它,我不相信你真的会得到任何多线程复制。
您需要在一个字符串中收集所有30个文件名,因此替换后的结果将是robocopy
的单次执行,如下所示:
robocopy /mov /mt "sourceDir" "destDir" "file1" "file2" "file3" ... "file30"