0

我必须使用 cmd 将我的最新文件单独移动到名为“存档”的文件夹中。我应该怎么做?

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

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

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

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

谢谢,

ResKing

4

2 回答 2

0

此批次将循环遍历所有旧文件(不是从当前月份开始)并将它们一一移动到 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
于 2012-11-04T17:38:58.330 回答
0

假设您的日期格式是 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
于 2012-10-23T16:44:35.530 回答