【批处理】自动根据pdf文件名批量自动合并pdf(可选页码交叉、不交叉)V2.0

文章正文
发布时间:2025-10-18 10:59

[Bash shell] 纯文本查看 复制代码

@echo off setlocal enabledelayedexpansion rem 提供用户三个选项 echo 请选择操作类型: echo 1. 合并前缀相同后面变换的PDF文件(去除后缀的字符数) echo 2. 合并前缀变换后面固定的PDF文件(去除前缀的字符数) set /p "choice=请输入你的选择 (1/2): " rem 检查是否拖拽了文件夹 if "%~1"=="" ( echo 请将一个文件夹拖拽到此批处理文件上进行处理。 pause exit /b ) set "target_folder=%~1" rem 根据用户选择操作 if "%choice%"=="1" ( call :MergeByPrefix ) else if "%choice%"=="2" ( call :MergeBySuffix ) else if "%choice%"=="3" ( call :MergeByBoth ) else ( echo 无效的选择,请重新运行程序。 exit /b ) pause exit /b :MergeByPrefix rem 处理前缀相同的文件 set "default_trim_length=1" set /p "trim_length=请输入动态变量末尾占位字符数(默认值为 %default_trim_length% ): " if "%trim_length%"=="" set "trim_length=%default_trim_length%" set "merged_dir=%target_folder%\merged_pdfs" mkdir "%merged_dir%" 2>nul set "processed_files=" set count=0 for %%F in ("%target_folder%\*.pdf") do ( set /a count+=1 echo 正在处理第: !count!个pdf set "filename=%%~nF" set "prefix=!filename:~0,-%trim_length%!" echo !processed_files! | findstr /c:"!prefix!," >nul if errorlevel 1 ( set "file_list=" for %%G in ("%target_folder%\!prefix!*".pdf) do ( if defined file_list ( set "file_list=!file_list! "%%G"" ) else ( set "file_list="%%G"" ) ) if defined file_list ( pdftk !file_list! cat output "%merged_dir%\!prefix!.pdf" ) set "processed_files=!processed_files!!prefix!," ) ) echo 处理完成,文件在%merged_dir%文件夹下面 goto :EOF :MergeBySuffix rem 处理后缀相同的文件 set "default_trim_length=1" set /p "trim_length=请输入动态变量前缀字符数占位(默认值为 %default_trim_length% ): " if "%trim_length%"=="" set "trim_length=%default_trim_length%" set "merged_dir=%target_folder%\merged_pdfs" mkdir "%merged_dir%" 2>nul set "processed_files=" set count=0 for %%F in ("%target_folder%\*.pdf") do ( set /a count+=1 echo 正在处理第: !count!个pdf set "filename=%%~nF" set "suffix=!filename:~%trim_length%!" echo !processed_files! | findstr /c:"!suffix!," >nul if errorlevel 1 ( set "file_list=" for %%G in ("%target_folder%\*"!suffix!".pdf") do ( if defined file_list ( set "file_list=!file_list! "%%G"" ) else ( set "file_list="%%G"" ) ) if defined file_list ( pdftk !file_list! cat output "%merged_dir%\!suffix!.pdf" ) set "processed_files=!processed_files!!suffix!," ) ) echo 处理完成,文件在%merged_dir%文件夹下面 goto :EOF

首页
评论
分享
Top