2012-03-26 38 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\.."

這將導致的路徑備份到防止正在使用的文件名的父文件夾。

相關問題