使用 minage 移动文件夹和文件的脚本
Script to move folders and files with minage
我正在使用 robocopy 从目录中删除 folders/files。
脚本:
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:\source\directory\file1.txt(12 天大)
c:\source\directory2\file2.txt(5 天前)
我的问题是脚本中的这一行:
FOR /d %%p IN ("%source1%\*") DO RMDIR "%%p" /s /q
该行不仅仅是从源代码复制的目录的 RMDIR,而是将它们全部删除。请注意,我不能使用 /move 因为它会删除源目录。如果我使用 /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
如果 robocopy
可以处理除文件夹删除之外的所有操作,您唯一需要做的就是确保 robocopy
无法删除文件夹。
只需将源文件夹设置为当前活动目录即可完成此操作。您无法删除正在使用的文件夹。
SET "source1=c:\source"
SET "destination=F:\destination"
SET "switch1=/move /e /create /minage:10 /r:10 /w:1 /LOG+:F:\logs\backup.log"
pushd "%source1%" && (
robocopy . "%destination%" %switch1%
popd
)
唯一的缺点是 robocopy
会显示一个错误,说它无法删除源文件夹,因为它正在使用中。
我正在使用 robocopy 从目录中删除 folders/files。
脚本:
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:\source\directory\file1.txt(12 天大)
c:\source\directory2\file2.txt(5 天前)
我的问题是脚本中的这一行:
FOR /d %%p IN ("%source1%\*") DO RMDIR "%%p" /s /q
该行不仅仅是从源代码复制的目录的 RMDIR,而是将它们全部删除。请注意,我不能使用 /move 因为它会删除源目录。如果我使用 /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
如果 robocopy
可以处理除文件夹删除之外的所有操作,您唯一需要做的就是确保 robocopy
无法删除文件夹。
只需将源文件夹设置为当前活动目录即可完成此操作。您无法删除正在使用的文件夹。
SET "source1=c:\source"
SET "destination=F:\destination"
SET "switch1=/move /e /create /minage:10 /r:10 /w:1 /LOG+:F:\logs\backup.log"
pushd "%source1%" && (
robocopy . "%destination%" %switch1%
popd
)
唯一的缺点是 robocopy
会显示一个错误,说它无法删除源文件夹,因为它正在使用中。