将批处理文件移动到特定日期

将批处理文件移动到特定日期

大家好,我有以下批处理文件,用于将文件从“当前”文件夹移动到“存档文件夹”。此任务每隔一周运行一次。

// 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

相关内容