2012-03-26 34 views
0

我目前有一个批处理文件,从文件夹A读取文件列表,如果它超过特定日期将其复制到文件夹B并删除原始文件。批处理文件备份在Windows中,重新创建嵌套的文件夹/文件

问题是我想批处理文件重新创建文件夹A内的文件结构,我不知道如何做到这一点。下面的代码:

echo off 
echo REM :- THE FOLLOWING FILES ARE OLDER THAN 7 DAYS AND CAN BE MOVED TO BACKUP -: 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c dir /b/s/t:w @path" 
echo. 
echo REM :- CONTINUE TO MOVE THOSE FILES TO THE BACKUP LOCATION -: 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c mkdir c:\test\two\@relpath" 
echo. 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c copy /-y @path c:\test\two\@relpath" 
pause 
echo. 
echo REM :- THE FOLLOWING FILES EXIST IN THE BACKUP LOCATION -: 
echo. 
pause 
dir "c:\test\two" /a/s/b /o:gn 
echo. 
echo REM :- CONTINUE TO DELETE THOSE BACKUPS -: 
pause 
rd /s "c:\test\two" 
echo. 
pause 

的问题是,@relpath似乎要把整个路径和文件名,所以在文件夹BI结束了自己的名字的文件夹内的所有文件名(如“filename.gif”内一个同名的文件夹)。如何从路径中去除文件名,根据该文件在文件夹B中创建文件结构,然后将文件复制到正确的位置?

感谢

回答

2

您可以使用xcopy重建具有/T开关的文件结构。您还需要使用/E开关来复制空目录和子目录。

在cmd提示符下键入xcopy /?可获得所有交换机的帮助。希望这可以帮助!

+0

谢谢,这是非常有益的,正是我所需要的。 – RingTailedLemur 2012-03-26 11:29:46

+0

太棒了,很高兴我能帮到你。如果这回答了您的问题,您可以通过点击打勾来接受答案。 – 2012-03-26 12:01:18

0

你可以写这样的:

forfiles /p c:\test\one /s /m *.gif /c "cmd /c mkdir c:\test\two\@relpath\.."

这将导致的路径备份到防止正在使用的文件名的父文件夹。

相关问题