本帖最后由 二零一八小王子 于 2024-9-1 15:09 编辑
使用方法:
拖动一个文件夹到【批处理自动【直接合并】同名PDF文件名】.bat文件上面,根据提示输入2个选项就行。
应用场景1--------(合并前缀相同后面变换,即去掉后面字符):
合并这种末尾变化的情况,文件格式是
S1 好好学习-01.pdf
S1 好好学习-02.pdf
S1 好好学习-03.pdf
S2 天天向上-01.pdf
S2 天天向上-02.pdf
动态末尾字符数据输入是 3
==================
合并结果:
S1 好好学习.pdf
S2 天天向上.pdf
==================================================
应用场景2-----------------(合并前缀变换后面固定,去掉前面比如2个字符)
1-天天向上.pdf
2-天天向上.pdf
3-天天向上.pdf
输入前面占位字符是2个
==================
合并结果:
天天向上.pdf
======================
================
[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
=============
下载地址https://wwnb.lanzoul.com/b02sez3h9a
密码:2e5h
|