使用批处理文件脚本按文件名中的日期将多个文件移动到以月份命名的文件夹中

使用批处理文件脚本按文件名中的日期将多个文件移动到以月份命名的文件夹中
@ECHO ON

SET "Src=H:\Trial\Testing"
SET "Dest=H:\Trial\Testing"

FOR /F "USEBACKQ TOKENS=1 DELIMS=- " %%A IN (`DIR /B "%Src%\*.pdf"`) DO (
    IF NOT EXIST "%%~A" MD "%%~A"
    XCOPY /F /Y "%Src%\*%%~A*.pdf" "%Dest%\%%~A\" && DEL /Q /F "%Src%\*%%~A*.pdf"
    )

EXIT

尝试使用批处理文件执行上述脚本。需要您的帮助来编辑它以匹配我的日期格式

我有 2 个文件夹,每个文件夹包含超过 180,000 个 pdf 文件,格式为 2022-11-21_TestP_NEG

因此所有文件名都以 yyyy-mm-dd_filename 开头。

  • 首先我想将它们移动到按月分类的文件夹中。
  • 在第二个中,我想按月移动它们,并在每个月内设置一个按日期单独的文件夹。

答案1

如果您确切知道月份部分应该在哪里,这很容易,只需从文件名的第六到第七个字符中提取并将其保存在变量中,然后检查目标中是否存在这样的文件夹,如果不存在,则创建它。然后将文件移动到目标\!Month!变量。

@echo off

SetLocal EnableDelayedExpansion

set Src=Source
set Dest=Source

for /f "delims=" %%a in ('dir /b "%Src%\*.pdf"') do (
                                                     set Name=%%a
                                                     set Month=!Name:~5,2!
                                                     if not exist "%Dest%\!Month!" md "%Dest%\!Month!"
                                                     move "%Src%\!Name!" "%Dest%\!Month!"
                                                    )

在此处输入图片描述

相关内容