Мне нужно объединить сотни PDF-файлов в новый большой. В этом коде я пытаюсь просмотреть список файлов и добавить их в новый файл pdf. Но результат не в том, что мне нужно, потому что только последний файл PDF в цикле будет скопирован в output.pdf. Что не так в моем коде?Использование Ghostscript in for loop
for /F "tokens=*" %%A in (fileorder.txt) do (
echo +++++ %%A ++++++
D:\GS\gs9.02\bin\gswin32c.exe^
-o output.pdf^
-sDEVICE=pdfwrite^
-dColorConversionStrategy=/LeaveColorUnchanged^
-dEncodeColorImages=false^
-dEncodeGrayImages=false^
-dEncodeMonoImages=false^
output.pdf^
%%A^
-dFIXEDRESOLUTION
pause
)
Ваш код не ** добавление/Добавление/слияния ** что-нибудь, он просто создает новый выходной файл, всегда одно и то же имя для каждого входного файла. Вам нужна командная строка, например 'gswin32c.exe ... file1.pdf file2.pdf file3.pdf file4.pdf', т. Е. Вы запускаете' gswin32c' один раз только с большим количеством файлов, а не один раз для каждого файла, как у вас. –
@MarkSetchell Ошибка в том, что при вызове GhostScript он очищает output.pdf, и поэтому текущий файл %% A копируется в чистый pdf-файл – ZerOne
@ZerOne: вы знаете, консоль cmd имеет ограничение на длину 8191 для длины команды. Если объединенная длина всех ваших файлов PDF-файлов + ключи командной строки ghostscript превышает этот предел, команда будет усечена. Было бы безопаснее использовать переключатель ['@ fileorder.txt'] (http://ghostscript.com/doc/7.07/Use.htm#Switches), и пусть ghostscript получит свой список файлов из файла file.txt. Это также избавит вас от необходимости определять, как создать список файлов в пакетной переменной. – rojo