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



我必须单独将最新文件移动到一个名为'存档'的文件夹中,我应该怎么做?

for ex:我有5月,6月,7月,8月和sep在my_folder中创建的文件。

现在,我需要将所有在5月,6月,7月和8月创建的文件移至my_archive和sep文件中必须留在my_folder中。

我使用了移动C: my_folder*。* c: my_archive。但这会移动所有文件。这样做的正确脚本应该是什么?

第二件事是,我正在考虑使用任务调度程序运行具有此移动脚本的批处理文件?这会有所帮助吗?

谢谢,

resking

假设您的日期格式为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

最新更新