Batch file 使用批处理脚本在文件夹中递归移动,并将超过六天的文件移动到子文件夹中
所以,我有一个大文件树,类似这样 \foo\foo1\foo\files\archive \foo\foo2\foo\files\archive \foo\foo3\foo\files\archive \foo\foo4\foo\files\archive 我的目标是能够循环到每个“\files”文件夹中,并将该文件夹中的文件移动到“\archive”文件夹中(如果文件已超过6天) 理想情况下,最好使用.bat脚本。对于这类事情,我是一个真正的新手,通常只使用robocopy来执行这类任务,但由于文件结构非常密集,因此编写50多行代码来完成这类任务似乎是一个漫长的过程Batch file 使用批处理脚本在文件夹中递归移动,并将超过六天的文件移动到子文件夹中,batch-file,cmd,robocopy,Batch File,Cmd,Robocopy,所以,我有一个大文件树,类似这样 \foo\foo1\foo\files\archive \foo\foo2\foo\files\archive \foo\foo3\foo\files\archive \foo\foo4\foo\files\archive 我的目标是能够循环到每个“\files”文件夹中,并将该文件夹中的文件移动到“\archive”文件夹中(如果文件已超过6天) 理想情况下,最好使用.bat脚本。对于这类事情,我是一个真正的新手,通常只使用robocopy来执行这类任务,但由
我需要能够深入到16个文件夹中,每个文件夹包含另外7个包含目标文件和存档位置的文件夹,然后确定目标文件是否超过最大年龄,如果超过最大年龄,则将其移动到位于目标位置内的子目录中 如果我理解正确,您可以尝试以下代码片段:
for /f "delims= " %%t in ('robocopy . . /njh /njs')do set "Tab=%%t"
pushd D:\
for /d /r %%i in (archive.?)do (
pushD %%i
for /f "Tokens=3 delims=%tab%" %%n in ('robocopy /L .. %%~ni /minage:6
')do echo move ..\%%n
popD
)
popD
@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
rem//在此处定义常量:
设置“\u ROOT=D:\”
设置“\u SRC=files”
设置“_DST=archive”
设置/A“\u年龄=7”
对于(“%\u ROOT%\*”)中的/D%%A,请执行以下操作(
对于(“%%~A\*”)中的/D%%B,请执行以下操作(
对于“%%~B\*”中的/D%%C,请执行以下操作(
机器人副本“%~C\%\U SRC%”“%%C\%\U SRC%\%\U DST%**”/MOV/IS/MINAGE:%\U AGE%
)
)
)
端部
退出/B
使用forfiles
命令而不是robocopy
,可以实现同样的效果:
@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
rem//在此处定义常量:
设置“\u ROOT=D:\”
设置“\u SRC=files”
设置“_DST=archive”
设置/A“\u年龄=7”
对于(“%\u ROOT%\*”)中的/D%%A,请执行以下操作(
对于(“%%~A\*”)中的/D%%B,请执行以下操作(
对于“%%~B\*”中的/D%%C,请执行以下操作(
如果@isdir==FALSE 2>nummkdir 0x22%\u DST%0x22&move/Y@file 0x22%\u DST%0x22,则文件/P“%~C\%\u SRC%”/M“*”/D-%\u AGE%/C”cmd/C
)
)
)
端部
退出/B
我不想删除任何内容。我需要能够深入到16个文件夹中,每个文件夹包含另外7个包含目标文件和存档位置的文件夹,然后确定目标文件是否超过最大年龄,如果超过最大年龄,则将其移动到位于目标位置内的子目录中。如果我没有说清楚,很抱歉。所以请使用move
而不是del
。如果我要使用显式的“target”和“source”命令执行此操作。就像我通常使用robocopy一样,我需要编写112行代码来实现这一点。如果我找不到其他方法,我会这样做,但我确信有更好的方法来处理此问题。此外,父文件夹名称很容易在此文件树中更改,因此使用显式目录并不理想。只要您有一种编程方法来查找目标文件夹,您应该可以接受。看看@SomethingDark给你的链接的答案,并通过阅读来理解它,你会发现这是一条路;-)