4

ディレクトリ内のすべての *.pdf をマージしようとしています:

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

これは Linux では完全に機能しますが、Windows で実行すると**Error: /undefinedfilename in *.pdf.**. 誰かがこれを手伝ってくれませんか。

4

3 に答える 3

3

(私の問題は実質的にまったく同じでした)。私の解決策(以前の回答の助けを借りて)は、元の質問にわずかによく答えます(実際のMS-DOSの例は以下にあります)

del filename.lst
for %%s in (C:\somefolder\some?wildcards*.pdf) do ECHO %%s >> filename.lst
gswin64c.... @filename.lst

説明する;

'>>' は MS-DOS で追加を意味するため、最初にファイル filename.lst を削除します。

%%sMS-DOSバッチファイルで(の代わりに)機能することを(ちょうど今他の場所で)読みました%s。明らかに-いつかファイル名にスペースが含まれる可能性があるので(私の場合はすでにそうでした)、安全を確保してファイル名を引用してください。したがって、より良いバッチファイルは次のとおりです。

del filename.lst
for %%s in (C:\somefolder\some?wildcards*.pdf) do ECHO "%%s" >> filename.lst
gswin64c.... @filename.lst

今のところ、これを使って多くの EPS ファイルを入力しましたが、多くの PDF ファイルも問題なく動作します。上記の例のように-実際に両方でテストしました-私の結果は、多くのEPSファイルを含むPDFです-1つのPDFに複数のPDFファイルからの多くのページがあります(質問に従って)。

于 2013-01-17T18:17:32.180 に答える
3

このトピックに関する以前の質問がありました。答えは同じです。Ghostscript では、入力ファイル名にワイルドカードを使用できません。入力として使用する各ファイルを指定する必要があります。

Linux で動作するのはなぜですか? 使用しているシェルは、コマンド ラインを Ghostscript に渡す前に'*.ps' をファイルの完全なリストに展開するためです。

Windows でこれを行うには、シェル スクリプトを実行し、ファイル名をファイルにパイプして、そのファイルを引数として GS に渡す必要があります。

EG、次のようなもの

for %s in (*.ps) do ECHO %s >> filename.lst
gswin64c.... @filename.lst
于 2012-09-23T08:47:27.550 に答える
0

forループの代わりに

dir /b /o:n *.ps > filename.lst

ジョブを完了します (ファイルのみを取得するには /b、名前でソートするには /o:n)。

並べ替えの問題を完全に解決するには、最初の 9 ファイルの名前を 01->09 に変更するか、出力ファイルをメモ帳で開いてこれらのいくつかのケースを手動で処理します。ただし、100 個を超えるファイルがある場合、これは面倒な場合があります。

私の問題を解決するのに役立ったこの1年前のスレッドをかき立てて申し訳ありませんが、「dir」を使用する方が簡単で柔軟性があり、開始する前にファイルリストを削除する必要はないと思いました.

于 2013-09-29T18:10:51.013 に答える