You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改批量移动文件的批处理脚本,使其保留当日文件仅移动指定日期前的文件?

如何修改批量移动文件的批处理脚本,使其保留当日文件仅移动指定日期前的文件?

嗨,这个需求很实用,咱们直接用Windows自带的forfiles命令就能搞定——它专门用来按日期筛选文件,完美解决你要保留当日文件、只移动历史文件的问题。

之前你的脚本用move直接转移所有文件,现在咱们加个筛选条件就行。下面是修改后的完整脚本,我会一步步给你解释:

@echo off
set "source=M:\systems\main\data\panelData\current"
set "dest=M:\systems\main\data\panelData\archive"

:: 确保归档文件夹存在,不存在则自动创建(避免移动时报错)
mkdir "%dest%" 2>nul

:: 筛选并移动所有修改日期早于今日的文件
forfiles /p "%source%" /m *.* /d -1 /c "cmd /c move @path \"%dest%\""

关键参数说明:

  • /p "%source%":指定要操作的源文件夹(就是你说的current文件夹)
  • /m *.*:匹配所有类型的文件,和你原来的逻辑一致
  • /d -1:核心筛选条件——选择最后修改日期早于当前日期1天前的文件,也就是昨天及更早的文件,刚好保留当天的文件不动
  • /c "cmd /c move @path \"%dest%\"":对每一个筛选出来的文件执行move命令,@path会自动替换为当前文件的完整路径,转义双引号是为了处理带空格的路径(如果你的路径没空格也可以不用,但加上更稳妥)

测试小技巧:

如果你担心误操作,可以先改成测试模式,脚本只会输出要移动的文件路径,不会真的执行移动:

@echo off
set "source=M:\systems\main\data\panelData\current"
set "dest=M:\systems\main\data\panelData\archive"

:: 测试模式:仅打印待移动的文件路径
forfiles /p "%source%" /m *.* /d -1 /c "cmd /c echo 待移动文件:@path"

确认输出的文件都是你想要移动的,再改回正式的move命令就好啦。

备注:内容来源于stack exchange,提问作者Matias Squartini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:44:35