我有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"
)
答案 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
。