プロが教える店舗&オフィスのセキュリティ対策術

PDFtkを利用して
pdfを180°回転させるか、ページを逆順にさせるか、両方行うかを選択して
選択した処理をpdfに行うバッチファイルを
作ろうと思ったのですがさっぱりうまく行きません。

手打ちで打つ分には、
コマンドプロンプトにて、PDFtkを利用して
カレントディレクトリをあらかじめdesktopに移動させて
処理させるpdfもデスクトップに置いた上で、

[ページを180°回転]  pdftk in.pdf cat 1-enddown output out.pdf
[ページを逆順] pdftk in.pdf cat end-1 output out.pdf
[ページを逆順&ページを180°回転] pdftk in.pdf cat end-1down output out.pdf
(入力ファイルをin.pdf、出力ファイルをout.pdfとしてます)

と打てばうまくいくのですが

これをバッチファイル化させようとして
@echo off
echo ************ アプリケーションメニュー ************
   echo [1] : 180°回転
   echo [2] : 逆順に並替え
   echo [3] : 180°回転+逆順に並替え
echo **********************************************
   set /p NUM=どの処理を行いたいか選択してください >""
   if "%NUM%"=="1" SET str1=1-enddown
 if "%NUM%"=="2" SET str1=end-1
if "%NUM%"=="3" SET str1=end-1down

rem 変換させる
pdftk %1 cat %str1% output "out.txt"

end

とやっても
************ アプリケーションメニュー ************
[1] : 180°回転
[2] : 逆順に並替え
[3] : 180°回転+逆順に並替え
**********************************************
どの処理を行いたいか選択してください >

が表示させれるだけ(数字入れても繰り返し表示されるだけ)になってうまく行きません。
どうしてもバッチファイル化したいので助力お願いします!

質問者からの補足コメント

  • 実行してみた所
    C:\Users\○○○○のところに、pdftkという空ファイル(拡張子なし)が出来、
    その後、終了することなく

    echo ************ アプリケーションメニュー ************
       echo [1] : 180°回転
       echo [2] : 逆順に並替え
       echo [3] : 180°回転+逆順に並替え
    echo **********************************************
       set /p NUM=どの処理を行いたいか選択してください

    が永遠表示され(何を打っても表示されます)ダメでした。
    (@echo offは分かりやすいようあえて外してみました)

    なお、赤線部だけをコマンドプロンプトで直接入力すると
    C:\Users\○○○○のところにちゃんと処理されたout.pdfが出てきました。。。

    「pdftkを使った処理をバッチファイルで」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2016/07/29 16:11
  • うれしい

    2回目の回答のお礼記入後に
    pdftkのところをpdftk.exeにして
    ――――――――――――――――――――
    @echo off

    (中略)

    rem 変換させる
    pdftk.exe "%~1" cat %str1% output "out.pdf"
    :end
    ――――――――――――――――――――
    としたらうまく行きました!

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/07/29 19:20

A 回答 (2件)

ちょっと原因は分からないですが、もしかしたら引数1のパスの問題でしょうか。



一度試しに、以下の記述で実行してみてください。

――――――――――――――――――――
@echo off

echo ************ アプリケーションメニュー ************
   echo [1] : 180°回転
   echo [2] : 逆順に並替え
   echo [3] : 180°回転+逆順に並替え
echo **********************************************
   set /p NUM=どの処理を行いたいか選択してください
   if "%NUM%"=="1" SET str1=1-enddown
 if "%NUM%"=="2" SET str1=end-1
if "%NUM%"=="3" SET str1=end-1down

rem 変換させる
pdftk "%~1" cat %str1% output "out.pdf"

:end
――――――――――――――――――――

■ 変更点
・「%1」を「"%~1"」に変更。
この回答への補足あり
    • good
    • 0
この回答へのお礼

変えてみましたがだめでした。。。
やはり何も起きず
echo ************ アプリケーションメニュー ************
   echo [1] : 180°回転
   echo [2] : 逆順に並替え
   echo [3] : 180°回転+逆順に並替え
echo **********************************************
   set /p NUM=どの処理を行いたいか選択してください
が永遠繰り返し表示される状態に。

endと書いているのに終了しないのも謎ですが、
繰り返し使ってないのに永遠繰り返されるのも謎…

お礼日時:2016/07/29 19:05

以下の線内の記述だとどうでしょうか。



――――――――――――――――――
@echo off

echo ************ アプリケーションメニュー ************
   echo [1] : 180°回転
   echo [2] : 逆順に並替え
   echo [3] : 180°回転+逆順に並替え
echo **********************************************
   set /p NUM=どの処理を行いたいか選択してください
   if "%NUM%"=="1" SET str1=1-enddown
 if "%NUM%"=="2" SET str1=end-1
if "%NUM%"=="3" SET str1=end-1down

rem 変換させる
pdftk %1 cat %str1% output "out.pdf"

:end
――――――――――――――――――

■ 変更点
・「set /p NUM=どの処理を行いたいか選択してください >""」の「 >""」を削除。
・「out.txt」を「out.pdf」に変更。
・「end」を「:end」に変更。
この回答への補足あり
    • good
    • 0
この回答へのお礼

つらい・・・

回答ありがとうございます

ただ残念なことにうまく行きませんでした・・・
詳しくは補足に書きました

お礼日時:2016/07/29 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!