2

.batファイルでGhostScript9.0664ビットを使用してディレクトリ内のすべてのPDFをマージしようとしています

次のように、merged.pdfになりますが、1ページで空白です

call gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf *.pdf

マージするPDFを実際に指定すると、正常に機能します。何が得られますか?

call gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf 1.pdf 2.pdf 3.pdf
4

4 に答える 4

2

Ghostscriptコマンドラインでワイルドカードを指定することはできません。そのように単純です。

GSは「*.pdf」というファイルを見つけられなかったため、マーキング操作を実行しませんでした。この場合、空のファイルが取得されます。

于 2012-09-11T18:50:53.177 に答える
1

Ghostscriptはそれ自体でワイルドカード拡張を行うことはできません。

ワイルドカード拡張を実行できるシェルの内部から呼び出す場合でもgs ... *.pdf、それは機能します。

リンクしたサイトと上記で使用したコードには違いがあります。

  1. コードはDOSバッチであり、を使用しますcall gswin64c ...。しかし、前述のように、Ghostscriptはワイルドカード自体を拡張することはできません。

  2. リンクされたWebページのコードはUnixシェルであり、Ghostscriptが独自のコマンドラインを表示する前にワイルドカード拡張を実行します。Ghostscriptがそれを見るようになると、ワイルドカードの拡張はすでに行われています。

最初に(拡張された)*。pdfファイル名を変数に格納してから実行するバッチファイルの解決策を見つける必要があり%mypdfs%ますcall gswin64c ... %mypdfs%

于 2012-09-12T12:25:07.530 に答える
1

コマンドラインからワイルドカードを指定することはできませんがgswin32c、コマンドファイルを実行させることはできます。

「コマンドファイル」では、スイッチを任意の空白(スペース、タブ、改行)で区切る必要があり、ファイルのサイズに制限がないため、必要な処理を実行するファイルを作成できます。

echo -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf > files.gsx
dir *.pdf /b >> files.gsx

このファイルfiles.gsxが作成されたら、次を使用してファイルを作成できます。

gswin32c @ files.gsx

そして、すべてのファイルがマージされます

于 2012-09-12T17:45:07.327 に答える
1

私はこれを解決するために次のことをしました:

1.)dir /B *.pdf > do.bat

2.)スペースdo.batに置き換えるためにメモ帳で開きます\r\n

3.)挿入:c:\Programs\gs\gs9.07\bin\gswin64 -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=merged.pdf最初に

その後実行されますdo.bat

Voilà

于 2013-05-10T11:16:45.483 に答える