如何使用cmd将最新文件单独移动到文件夹中?

如何使用cmd将最新文件单独移动到文件夹中?,cmd,scheduled-tasks,Cmd,Scheduled Tasks,我必须使用cmd将我的最新文件单独移动到名为“archive”的文件夹中。我应该如何操作 例如:我的文件夹中有5月、6月、7月、8月和9月创建的文件 现在,我需要将5月、6月、7月和8月创建的所有文件移动到我的_存档中,而sep文件必须单独保留在我的_文件夹中 我使用了移动c:\my\u文件夹**c:\my\u存档。但这会移动所有文件。执行此操作的正确脚本应该是什么 第二件事是,我正在考虑使用任务调度器来运行包含此移动脚本的批处理文件?这有用吗 谢谢 重新排序假设您的日期格式为MM/dd/yyy

我必须使用cmd将我的最新文件单独移动到名为“archive”的文件夹中。我应该如何操作

例如:我的文件夹中有5月、6月、7月、8月和9月创建的文件

现在,我需要将5月、6月、7月和8月创建的所有文件移动到我的_存档中,而sep文件必须单独保留在我的_文件夹中

我使用了移动c:\my\u文件夹**c:\my\u存档。但这会移动所有文件。执行此操作的正确脚本应该是什么

第二件事是,我正在考虑使用任务调度器来运行包含此移动脚本的批处理文件?这有用吗

谢谢


重新排序

假设您的日期格式为MM/dd/yyyy,这可能会起作用:

@echo off

set month=%date:~0,2%
set year=%date:~-4%

mkdir temp_folder

rem move this month's files out of the way
forfiles /d +%month%/01/%year% /c "%comspec% /c move \"@path\" temp_folder"

rem move all other files to my_archive
forfiles /d -%month%/01/%year% /c "%comspec% /c move \"@path\" my_archive"

rem restore this month's files
move temp_folder\*.* .

rmdir temp_folder

此批处理将遍历所有旧文件(不是从当月开始),并将它们逐个移动到my_archive目录

我正在创建一个新文件,以防此目录中没有新文件(我使用一个新文件作为循环的中断规则)。此文件将在批处理文件的末尾删除

dir参数仅显示文件并按日期对其排序。您还可以指定您喜欢的时间戳:

/T:C - Creation
/T:A - Last Access
/T:W - Last Written

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

SET SRC_PATH=c:\my_folder
SET DST_PATH=c:\my_archive
SET MONTH=%date:~4,2%
SET YEAR=%date:~-4%
echo blah > !SRC_PATH!\to_delete.txt

for /f "skip=4 tokens=1,5 delims= " %%g in ('dir /A:-D /O:D !SRC_PATH!') do (
set date=%%g
set m=!date:~0,2!
set y=!date:~-4!
if !YEAR! gtr !y! (move !SRC_PATH!\%%h !DST_PATH!\%%h) else (
if !MONTH! gtr !m! (move !SRC_PATH!\%%h !DST_PATH!\%%h) else goto :end
) )

:end
del !SRC_PATH!\to_delete.txt