重新创建目录结构并复制最新文件

时间:2015-05-27 21:54:46

标签: batch-file command-line

我有100多个子目录都在同一个文件夹下,我希望将最新文件复制到备份位置,目录结构完好无损。

\data\sub1\newest.file -> \backup\sub1\newest.file
\data\sub1\older.file1.ignore
\data\sub1\older.file2.ignore
\data\sub2\newest.file -> \backup\sub2\newest.file
\data\sub2\older.file1.ignore
etc....

到目前为止,这是我所拥有的,我似乎无法将它拼凑在一起。任何帮助将不胜感激。

@echo off

set source="c:\data"

set dest="n:\backup"

if not exist %dest% md %dest%

cd /d %source%

for /d  %%x in ("%source%"/*.*) do (

if not exist "%dest%\%%x" md "%dest%\%%x"

FOR /F %%I IN ('DIR *.* /A-D /B /O-D') DO COPY %%I "%DEST%\%%X" & @ECHO %%I     COPIED TO "%DEST%\%%X"

)

3 个答案:

答案 0 :(得分:0)

如果我是你,我会尝试用robocopy来做这件事,因为这很可能是一个更强大的解决方案。

答案 1 :(得分:0)

视窗'内置xcopy程序提供了一个包含空目录的标志。

C:\>xcopy "%source%" "%dest%" /E

但是,听起来您可能只想复制较新/丢失的文件。如果是这种情况,那么@Marged就是对的。您应该使用robocopy

C:\>robocopy "%source%" "%dest%" /E

查看robocopy /?以获取所有详细信息和其他命令。

答案 2 :(得分:0)

%%x语句中的元变量for CaSe-SeNsItIvE ,因此您必须在整个循环中使用%%x,但您使用的是{{1}在%%X语句中。

由于您只想复制第一个文件,因此您应该附加copy,以便在复制第一个文件后终止&goto alabelotsideoftheforloop