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

批处理脚本优化需求:同前缀PDF归至同文件夹并重命名

批处理脚本改进方案:支持同前缀PDF归类与序号重命名

原有批处理脚本支持拖拽PDF文件执行,可单个PDF创建对应文件夹并重命名,但无法处理同前缀PDF(如102030_01.pdf、102030_02.pdf)的归类与序号递增需求。以下是改进后的解决方案:

改进后脚本代码

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
If "%~1" == "" GoTo :EOF
For %%G In (%*) Do (For %%H In ("%%~G") Do If "%%~aH" Lss "-" (
        Echo Error! %%G no longer exists.
        %SystemRoot%\System32\timeout.exe /T 2 /NoBreak 1>NUL
    ) Else If "%%~aH" GEq "d" (For %%I In ("%%~G\*.pdf") Do Call :Sub "%%~I"
    ) Else If /I "%%~xG" == ".pdf" (Call :Sub "%%~G"
    ) Else (Echo Error! %%G is not a PDF
        %SystemRoot%\System32\timeout.exe /T 2 /NoBreak 1>NUL))
GoTo :EOF

:Sub
Set "filename=%~n1"
Set "prefix=%filename%"
:: 提取下划线前的前缀部分
For /F "delims=_" %%P In ("%filename%") Do Set "prefix=%%P"
:: 移除前缀中的点号
Set "prefix=%prefix:.=%"

:: 创建前缀命名的文件夹
MD "%~dp1%prefix%" 2>NUL
If ErrorLevel 1 (
    Echo Error! Failed to create folder "%~dp1%prefix%"
    %SystemRoot%\System32\timeout.exe /T 2 /NoBreak 1>NUL
    Exit /B
)

:: 生成递增序号(统计目标文件夹内符合命名规则的文件数)
Set "seq=00001"
For /F "tokens=1 delims=" %%S In ('Dir /B /A-D "%~dp1%prefix%\P%prefix:-=%_V1_A0V0_T07-54-369-664_S*.pdf" 2^>NUL ^| Find /C /V ""') Do (
    Set /A "seq=%%S+1"
)
:: 格式化序号为5位数字
Set "seq=0000%seq%"
Set "seq=%seq:~-5%"

:: 移动并重命名文件
Move /Y %1 "%~dp1%prefix%\P%prefix:-=%_V1_A0V0_T07-54-369-664_S%seq%%~x1"
Exit /B

关键修改说明

  1. 前缀提取:通过For /F "delims=_"分割文件名,提取下划线前的部分作为文件夹名;若文件名无下划线,则使用原文件名作为前缀。
  2. 序号自动递增:通过Dir命令统计目标文件夹内已存在的对应格式文件数量,将数量加1后格式化为5位数字(不足补0)。
  3. 路径调整:将原脚本中创建“原文件名”文件夹的逻辑,改为创建“前缀名”文件夹,确保同前缀文件归入同一目录。

内容的提问来源于stack exchange,提问作者user20083537

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:05:30