Robocopy:如何移动目录的内容,但保留目录

简单的任务:

将目录c:\Users\files\Desktop\test 2所有内容移动到c:\Users\files\Desktop\test 1

 C:\admin\temp>robocopy "c:\Users\files\Desktop\test 2" "c:\Users\files\Desktop\test" *.* /S /MOVE 

听起来很合理,但现在, c:\Users\files\Desktop\test 2被删除了。 是否有一个切换只是移动CONTENT而没有删除目录本身?

    我一直在试图从networking共享做同样的事情。

     SET MoveDirSource=\\Server\Folder SET MoveDirDestination=Z:\Folder 

    以下是我在Windows 7机器上的testing结果和解决scheme。

    build议:

     ROBOCOPY "%MoveDirSource%" "%MoveDirDestination%" /MOVE /E 

    问题:移动源文件夹。

    build议:

     ROBOCOPY "%MoveDirSource%" "%MoveDirDestination%" /MOVE /E /XD "%MoveDirSource%" 

    问题:仍然移动源文件夹。

    build议:

     ROBOCOPY "%MoveDirSource%" "%MoveDirDestination%" /MOV /E 

    问题:在源文件夹中留下空文件夹结构。

    工作scheme:

     MKDIR "%MoveDirDestination%" FOR %%i IN ("%MoveDirSource%\*") DO MOVE /Y "%%i" "%MoveDirDestination%\%%~nxi" FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi" 

    前两行移动顶层文件,第三个移动文件夹。 请注意,double%是在batch file中使用的,粘贴到命令行中需要将这些更改为单个百分比标记。

    在目的地的nxi是FOR SUBSTITUTION VARIABLE(参见FOR /?),其中〜nxi表示当前正在循环的项目的名称和扩展名。

    Robocopy在每次尝试之间默认为“重试百万次”和“等待30秒”,因此您可能希望将/ R:1 / W:1添加到robocopy参数中。

    你有没有尝试/ MOV选项?

      /MOV :: MOVe files (delete from source after copying). 

    F:> robocopy /?


    ROBOCOPY ::强大的文件复制为Windows

    开始:周五六月06 11:51:26 2010

      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 "*.*"). :: :: Copy options : :: /S :: copy Subdirectories, but not empty ones. /E :: copy subdirectories, including Empty ones. /LEV:n :: only copy the top n LEVels of the source directory tree. /Z :: copy files in restartable mode. /B :: copy files in Backup mode. /ZB :: use restartable mode; if access denied use Backup mode. /EFSRAW :: copy all encrypted files in EFS RAW mode. /COPY:copyflag[s] :: what to COPY for files (default is /COPY:DAT). (copyflags : D=Data, A=Attributes, T=Timestamps). (S=Security=NTFS ACLs, O=Owner info, U=aUditing info). /DCOPY:T :: COPY Directory Timestamps. /SEC :: copy files with SECurity (equivalent to /COPY:DATS). /COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU). /NOCOPY :: COPY NO file info (useful with /PURGE). /SECFIX :: FIX file SECurity on all files, even skipped files. /TIMFIX :: FIX file TIMes on all files, even skipped files. /PURGE :: delete dest files/dirs that no longer exist in source. /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE). /MOV :: MOVe files (delete from source after copying). /MOVE :: MOVE files AND dirs (delete from source after copying). /A+:[RASHCNET] :: add the given Attributes to copied files. /A-:[RASHCNET] :: remove the given Attributes from copied files. /CREATE :: CREATE directory tree and zero-length files only. /FAT :: create destination files using 8.3 FAT file names only. /256 :: turn off very long path (> 256 characters) support. /MON:n :: MONitor source; run again when more than n changes seen. /MOT:m :: MOnitor source; run again in m minutes Time, if changed. /RH:hhmm-hhmm :: Run Hours - times when new copies may be started. /PF :: check run hours on a Per File (not per pass) basis. /IPG:n :: Inter-Packet Gap (ms), to free bandwidth on slow lines. /SL :: copy symbolic links versus the target. /MT[:n] :: Do multi-threaded copies with n threads (default 8). n must be at least 1 and not greater than 128. This option is incompatible with the /IPG and /EFSRAW options. Redirect output using /LOG option for better performance. :: :: File Selection Options : :: /A :: copy only files with the Archive attribute set. /M :: copy only files with the Archive attribute and reset it. /IA:[RASHCNETO] :: Include only files with any of the given Attributes set. /XA:[RASHCNETO] :: eXclude files with any of the given Attributes set. /XF file [file]... :: eXclude Files matching given names/paths/wildcards. /XD dirs [dirs]... :: eXclude Directories matching given names/paths. /XC :: eXclude Changed files. /XN :: eXclude Newer files. /XO :: eXclude Older files. /XX :: eXclude eXtra files and directories. /XL :: eXclude Lonely files and directories. /IS :: Include Same files. /IT :: Include Tweaked files. /MAX:n :: MAXimum file size - exclude files bigger than n bytes. /MIN:n :: MINimum file size - exclude files smaller than n bytes. /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date. /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date. /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n. /MINLAD:n :: MINimum Last Access Date - exclude files used since n. (If n < 1900 then n = n days, else n = YYYYMMDD date). /XJ :: eXclude Junction points. (normally included by default). /FFT :: assume FAT File Times (2-second granularity). /DST :: compensate for one-hour DST time differences. /XJD :: eXclude Junction points for Directories. /XJF :: eXclude Junction points for Files. :: :: Retry Options : :: /R:n :: number of Retries on failed copies: default 1 million. /W:n :: Wait time between retries: default is 30 seconds. /REG :: Save /R:n and /W:n in the Registry as default settings. /TBD :: wait for sharenames To Be Defined (retry error 67). :: :: Logging Options : :: /L :: List only - don't copy, timestamp or delete any files. /X :: report all eXtra files, not just those selected. /V :: produce Verbose output, showing skipped files. /TS :: include source file Time Stamps in the output. /FP :: include Full Pathname of files in the output. /BYTES :: Print sizes as bytes. /NS :: No Size - don't log file sizes. /NC :: No Class - don't log file classes. /NFL :: No File List - don't log file names. /NDL :: No Directory List - don't log directory names. /NP :: No Progress - don't display percentage copied. /ETA :: show Estimated Time of Arrival of copied files. /LOG:file :: output status to LOG file (overwrite existing log). /LOG+:file :: output status to LOG file (append to existing log). /UNILOG:file :: output status to LOG file as UNICODE (overwrite existing log). /UNILOG+:file :: output status to LOG file as UNICODE (append to existing log). /TEE :: output to console window, as well as the log file. /NJH :: No Job Header. /NJS :: No Job Summary. /UNICODE :: output status as UNICODE. :: :: Job Options : :: /JOB:jobname :: take parameters from the named JOB file. /SAVE:jobname :: SAVE parameters to the named job file /QUIT :: QUIT after processing command line (to view parameters). /NOSD :: NO Source Directory is specified. /NODD :: NO Destination Directory is specified. /IF :: Include the following Files. 

    您可以通过在不想删除的目录中创build占位符文件,然后指示robocopy使用/ XF排除文件

    由于文件被排除,它不会被移动,并且目录不会被删除。

    有关详细信息,请参阅其他站点: http : //www.experts-exchange.com/OS/Microsoft_Operating_Systems/Windows/XP/Q_24306678.html (并向下滚动到底部等等)。

    我遇到了同样的问题,只需在运行robocopy之后用MKDIR命令修复它。

    您要移动给定文件夹的所有内容,以便只留下父文件夹。 那么为什么不只是再次创build父文件夹呢?

    当然,你可以有一些用户权利的问题,但也可以解决。

    创build一个您从robocopy命令中排除的唯一占位符文件。

    一个class轮如下:

     echo.>>"C:\Source\.touch" && (robocopy "C:\Source" "C:\Dest" /XF ".touch" /MOVE /E & del "C:\Source\.touch") 

    使用/ mov开关而不是/移动

    “我的”解决scheme是将文件和文件夹移动到源文件夹中的临时文件夹中。 (不要将临时文件夹复制到它自己!)然后将其移动到taget文件夹。

     set Source=I:\_Test\ToArchive set target=I:\_Test\Archive set tempFolderName=@_Copy_in_progress_Do_not_use_@ set LogFile=robocopy-result.log robocopy.exe %source% %source%\%tempFolderName% /E /MOVE /NS /NP /v /W:0 /R:0 /LOG:%LogFile% /XD %source%\%tempFolderName% sleep 5 robocopy.exe %source%\%tempFolderName% %target% /E /MOVE /NS /NP /v /W:0 /R:0 /LOG+:%LogFile% 

    我只是检测到“移动”到临时文件夹需要太多的时间。 这里更新:

     set Source=I:\_Test\ToArchive set target=I:\_Test\Archive set tempFolderName=@_Copy_in_progress_Do_not_use_@ set LogFile=robocopy-result.log mkdir %source%\%tempFolderName%\ for /f "delims==" %%I IN ('dir "%source%" /B') do if NOT %%I==%tempFolderName% (move "%source%\%%I" "%source%\%tempFolderName%") sleep 3 robocopy.exe %source%\%tempFolderName% %target% /E /MOVE /NS /NP /v /W:0 /R:0 /LOG:%LogFile% 

    我很幸运find答案。 我想将文件夹移动到磁盘的顶层。 我试过了:

     Robocopy "<PathToFolderToMove>" "H:\" /MOVE /E 

    它给目的地使用以下错误: H:\“\ MOVE \ E \

    我猜想,“\”是逃避了下面的双引号,我改变了命令:

     Robocopy "<PathToFolderToMove>" "H:\." /MOVE /E 

    最终将“”的内容复制到驱动器的根目录。

    所以这个问题的答案是:

     Robocopy "c:\Users\files\Desktop\test 2" "c:\Users\files\Desktop\test\." /MOVE /E 

    问候,
    乔治

    我刚刚使用/mov/e开关进行了testing,并且完美地工作。

    从命令行选项注意到, /mov/move之间有区别。 testing文件移动到目的地,完整地保留源文件夹上的目录结构。

    为什么不一样? 这并没有什么不同。 移动操作是复制\删除操作,无论您是否使用Robocopy。 你正在告诉它移动文件夹。 移动意味着你移动到新的位置并腾出以前的位置。

    只需添加\ *

     C:\admin\temp>robocopy "c:\Users\files\Desktop\test 2\*" "c:\Users\files\Desktop\test" /S /MOVE