我正在寻找一个批处理文件或将像pdf文件名一样合并的vbscript。应该组合的文件将具有相同的文件名,一直到第一个“。”我有整个文件夹,包含大约4000个文件。文件扩展名符合以下格式
1111111111111111.22222222.pdf ==> 1是任何16个数字0-9和2是任何8个数字0-9
我想以批处理方式合并文件夹的类似文件。所有文件名相同的文件都应该合并为“。”。
示例:1111111111111111.25484686.pdf应与1111111111111111.54874568合并,而5555555555555555.78468767应与5555555555555555.48687654和5555555555555555.68974582合并
文件可以输出到另一个文件夹,但不是必需的。输出后的新文件名无论是否有效都无关紧要。
我知道有一些软件可以解决这个问题,但拖放所有类似文件以合并它们需要很长时间。
答案 0 :(得分:3)
Google搜索找到了http://www.pdfsam.org/ - 一个提供免费PDF合并实用程序的网站,该实用程序具有命令行界面(以及GUI)。我不知道这有多好用。确保您获得本网站提供的免费实用程序,而不是在同一网站上公布的竞争对手的解决方案。
还有许多其他实用程序,其中大部分是收费的。
一旦弄清楚如何使用所选实用程序的命令行界面,就可以使用如下所示的批处理文件来动态构建要合并的文件列表。 (这个批处理代码是未经测试的。这个概念肯定会有效,但可能需要一些调试)
@echo off
setlocal enableDelayedExpansion
:: This initial loop determines which files need to be merged
:: and then calls :merge for each unique set of files. This top
:: loop should work no matter what utility you choose.
set "current="
set cnt=0
:: for current directory, LOC should be empty (or .\)
:: for any other path, LOC should include \ at end
set "LOC="
for %%F in ("%LOC%*.*.pdf") do (
for /f "tokens=1,* delims=." %%A in ("%%~nF") do (
if "%%A" neq "!current!" (
if defined current call :merge
set cnt=0
set current=%%A
)
set /a cnt+=1
set pdf.!cnt!=%%~fF
)
exit /b
:merge
:: This routine should build the command line to merge the current
:: file list contained in pdf.1 through pdf.!cnt!
::
:: Below is code to build a hypothetical file list to be used on
:: the merge command line. This will obviously need to be modified
:: based on the syntax of your chosen merge utility.
::
set "list="
for /l %%N in (1 1 !cnt!) do set list=!list! -f "!pdf.%%N!"
::
::
:: The rest is up to you!
::
exit /b
答案 1 :(得分:0)
这个软件Dysprosium可以批量合并,无需编写批处理文件,也无需拖放即可免费获取和使用。按预期方式将所有批处理放在同一文件夹中就足够了。但是,您需要使硬件资源与批处理中的文件大小成比例。
这是一个简单的灯" JAR"文件可移植而不安装在操作系统上。
由于它是基于Java的软件,因此您还需要增加可用于Java运行时的Java内存。 Java需要抓取一部分物理内存来渲染大型PDF文件。这个wiki解释了如何增加Java运行时内存。
(恕我直言)使用现成的软件,您无法合并总批量大于3GB-3.5GB的PDF批次。