我正在使用robocopy從目錄中刪除文件夾/文件。使用minage移動文件夾和文件的腳本
腳本:
SET source1=c:\source
SET destination=F:\destination
SET switch1=/r:10 /w:1 /e /create /minage:10 /mt /LOG:F:\logs\backup.log
FOR /d %%i IN ("%source1%\*") DO ROBOCOPY "%%i" "%destination%\%%~nxi" %switch1%
FOR /d %%p IN ("%source1%\*") DO RMDIR "%%p" /s /q
FOR /d %%q IN ("%destination%\*") DO RMDIR "%%q" /s /q
源目錄如下:
C:\源\目錄\ FILE1.TXT(12日齡)
C:\源\ directory2 \ FILE2.TXT(5天)
我的問題是此行的腳本:
FOR /d %%p IN ("%source1%\*") DO RMDIR "%%p" /s /q
該行不僅僅是RMDIR從源代碼複製的目錄,它將其全部刪除。還有一個提示,我不能使用/移動,因爲它會刪除源目錄。如果我使用/ mov,它不會刪除所有的子目錄。
有什麼想法我在這裏有錯嗎?提前致謝。
編輯:我包括源目錄dir/tw/s信息進行故障排除。 ABT文件夾是應該刪除的文件夾。
Directory of C:\
09/27/2016 03:08 PM <DIR> .
09/27/2016 12:10 PM <DIR> ..
09/27/2016 03:09 PM <DIR> New Folder
06/25/2014 05:47 AM <DIR> abt
0 File(s)
Directory of C:\New folder
09/27/2016 03:09 PM <DIR>
09/27/2016 03:08 PM <DIR>
09/27/2016 03:09 PM
1 File(s)
Directory of C:\abt
06/25/2014 05:47 AM <DIR>
09/27/2016 03:08 PM <DIR>
03/20/2014 10:08 AM
06/25/2014 05:47 AM
04/28/2014 02:33 PM
05/20/2014 10:47 AM <DIR>
02/18/2014 07:24 PM
05/20/2014 10:51 AM
5 File(s)
Directory of C:\abt\Scripts
05/20/2014 10:47 AM <DIR>
06/25/2014 05:47 AM <DIR>
10/02/2012 11:18 AM
02/02/2012 12:16 PM
02/17/2012 11:32 AM
當然'rmdir/S'刪除所有,這就是它的用途;您可以將'/ MOVE'選項添加到'robocopy'中,以便*將匹配的文件和目錄移動到目標位置,然後您可以省略整個'for/D %% p'命令行... – aschipfl
/move將刪除父目錄(源目錄)。我需要能夠保持這一點。所以它會刪除'c:\ source'。另外,如果我使用/ mov,那麼它不會刪除'c:\ source'下的子目錄。 –
您可以使用forfiles進行年齡測試,然後編寫您需要的任何命令。 'forfiles/D -10/C「cmd/c如果@ isdir == TRUE echo複製@relPath」' – FloatingKiwi