大家好,我有以下批处理文件,用于将文件从“当前”文件夹移动到“存档文件夹”。此任务每隔一周运行一次。
// Move files from Current folder to Archive folder using a batch file
@echo off
move "M:\systems\main\data\panelData\current\*.*" "M:\systems\main\data\panelData\archive\"
但是,我想将当前文件保留在“当前文件夹”中,并将文件移动到前一天使用的存档文件中,依此类推。
即(如果批处理文件于 10 月 15 日今天运行,则将移动所有文件直到 10 月 14 日)
我怎样才能做到这一点?
答案1
用于forfiles
对每个超过 X 天的文件分别调用命令:
forfiles /p M:\systems\main\data\panelData /m current* /d -2
一旦您验证了这将返回正确的结果,请添加/c
以使其实际移动文件:
forfiles ... /c "cmd /c move @file M:\systems\main\data\panelData\archive"
也可以看看:
答案2
但是,我想将当前文件保留在“当前文件夹”中,并将文件移动到前一天使用的存档文件中,依此类推。
即(如果批处理文件于 10 月 15 日今天运行,则将移动所有文件直到 10 月 14 日)
我怎样才能做到这一点?
- 尝试
RoboCopy
而是使用[
ForFile
+
CMD.exe
]
:
- 使用:RoboCopy ... /MinAge:2
@echo off
cd /d "M:\Systems\Main\Data\PanelData" || Exit /b %ErrorLevel%
set "_dest=M:\Systems\Main\Data\PanelData\Archive"
robocopy .\. "%_dest%" /Mov /MinAge:2 /CopyAll /R:2 /W:10 /XF *.cmd /NJH /NJS /S
$SourceDir='M:\Systems\Main\Data\PanelData'
$TargetDir='M:\Systems\Main\Data\PanelData\Archive'
Get-ChildItem -Path $SourceDir -Recurse | Where-Object {
$_.CreationDate -lt (Get-Date).AddDays(-2)
} | Move-Item –Force -Verbose -Destination $TargetDir -Whatif
# Or...
$SourceDir='M:\Systems\Main\Data\PanelData'
$TargetDir='M:\Systems\Main\Data\PanelData\Archive'
ls -Path $SourceDir -Re | ? {
$_.CreationDate -lt (Get-Date).AddDays(-2)
} | Mv –Fo -Verb -Dest $TargetDir -Wi