• 締切済み

コマンドプロンプトのfor文での連続コマンドについて

コマンドプロンプトのfor文での連続コマンドについて winXPを使っています。 コマンドプロンプトでバッチファイルを作り、フォルダーの中にあるPDFファイルをアドビリーダーで印刷して削除したいのですが、アドビリーダーを手動で終了させないとファイルの削除ができません。どうすればいいでしょうか。 *****printpdf.batの内容**************** for %%A in (E:\pdf\*.*) do ( "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t %%A taskkill /F /IM AcroRd32.exe Del %%A ) *************************************** 3行目のtaskkillが問題らしいのですが。。。 また、本当はコマンドを&&でつなげたいのですが、 ( )でくくらないとDELされません。 &&でつなげるにはどうしたらいいか、 その点もおわかりでしたらご教授ください。 よろしくお願いします。

  • jin34
  • お礼率75% (3/4)

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.2

>AcroRd32コマンドが終了してもアドビリーダーが開いたままなのです。 リーダーの画面が開いたままと言うことは、AcroRd32コマンドが終了していないと言うことですが?? 画面を閉じればAcroRd32コマンドが終了します。 もしかして、バッチの質問ではなくて、「アドビリーダーで印刷後に自動的に終了するには、/t オプションの他に何を付ければいいでしょう?」というのが質問なのでしょうか? それだと私にはわかりません。 バッチで解決するとすると、「リーダーを起動してから60秒後に強制終了する」でいいなら(非常に大きなファイルだと60秒後はまだ印刷中かもしれませんが), ( start "" "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t %%A ping -n 61 localhost >NUL taskkill /F /IM AcroRd32.exe Del %%A )

jin34
質問者

お礼

ご回答ありがとうございます。 >もしかして、バッチの質問ではなくて、「アドビリーダーで印刷後に自動的に終了するには、/t オプションの他に何を付ければいいでしょう?」というのが質問なのでしょうか? そう言いたかったのですがうまく伝わらなかったようですね。 ごめんなさい。 結局VBScriptで以下のように書いて動かしました。 *************printpdf.vbs************************************ Set objWshShell = WScript.CreateObject("WScript.Shell") Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder("E:\pdf\") Set fc = f.Files For Each f1 in fc fn = "E:\pdf\"&f1.name objWshShell.Run """C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"" /n /t """&fn&"""" WScript.Sleep(10000) fs.deletefile f1 Next Set fs = Nothing Set f = Nothing Set fc = Nothing objWshshell.Run"closeadb.bat" Set objWshShell =nothing ************************************************************* ************closeadb.bat************************************* @echo off taskkill /F /IM AcroRd32.exe ************************************************************* どうもありがとうございました。 問題は別の形で解決しましたのでこれにて終了させていただきます。

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

まず、( ) でくくるのと&&でつなげるのは意味が違います。 ( A B ) は、コマンドAが終了したらコマンドBを起動する。 A && B は、コマンドAが正常終了したらコマンドBを起動し、Aが異常終了(ERROELEVELが0以外)ならコマンドBを起動しない。 ( ) と同じ意味になるのは、A & B です。 ( "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t %%A taskkill /F /IM AcroRd32.exe Del %%A ) だと、taskkillコマンドが起動されるのは、AcroRd32コマンドが終了してからなので、KillすべきAcroRd32プロセスはないはずです。つまり、 ( "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t %%A Del %%A ) で良いはず。ただ、直後で消えないのであれば、 ( "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t %%A ping -n 2 localhost > NUL Del %%A ) と、すこし時間待ちを入れてみてはどうでしょうか?

jin34
質問者

お礼

ご回答ありがとうございます。 でもうまくいきません。 >だと、taskkillコマンドが起動されるのは、AcroRd32コマンドが終了してからなので、KillすべきAcroRd32プロセスはないはずです。 AcroRd32コマンドが終了してもアドビリーダーが開いたままなのです。 そこでtaskkillを入れてみたのですがやはり。。。

関連するQ&A

  • コマンドプロンプトのFOR文がダブルクリックで実行できない。

    コマンドプロンプトのFOR文がダブルクリックで実行できない。 お世話になります。 まず当方の環境は以下になります。 OS:Windows XP Pro SP2 C:\tempにtest.batというバッチファイルを作成し以下を記述しました。 FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i で、このtest.batをダブルクリックすると実行できないんです。 ただしコマンドプロンプトからでは問題なく実行できます。 また別PCではダブルクリック&コマンドプロンプトで問題なく実行できます。 どのようにすれば解決できるのかわからずに困っております。 どなたかアドバイスお願いできますでしょうか。

  • コマンドプロンプトでアプリを削除する方法

    コマンドプロンプトで、アプリやファイルを削除したいです。 お恥ずかしながらプログラムが分からず、調べても不明点があった為再度質問させて頂きます。 例えばAdobe製品のソフトを削除する時、 コマンドプロンプトに 「del adobe」と入れただけで削除出来ますか? また、2dc8j0amck のような怪しいファイルも 「del 2dc8j0amck¥」とバックスラッシュ付きで削除する事も可能でしょうか? パソコンメーカーはDynabook OSはWindows8です。

  • 題名:FOR文でコマンドプロンプトが終了する。

    題名:FOR文でコマンドプロンプトが終了する。 お世話になります。昨日の質問に関連して新たな事象が発生したため質問させてください。 まず当方の環境は以下になります。 OS:Windows XP Pro SP2 1. [スタート]>[ファイル名を指定して実行]>[cmd.exe]を入力 2. 以下のFOR文を入力 FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 3. 実行のため[Enter]キー入力 > コマンドプロンプト終了 [細く] 上記現象は1で起動したコマンドプロンプトで子インスタンスを開始(cmd.exeを実行) 後2~を実行させると成功します。 どのようにすれば解決できるのかわからずに困っております。 どなたかアドバイスお願いできますでしょうか。

  • コマンドプロンプトについて

    お世話になります。 コマンドプロンプトでの起動方法は分かるのですが、 Excel終了方法を知りたいです。下記の様に記述して うまく行きませんでした。 また、今Excelが開かれているなら、終了する。と言う 記述方法もご教示頂きたく宜しくお願い致します。           記 taskkill / fi "excel.exe"-

  • コマンドプロンプトのdelと削除ソフトについて

    ファイルを強制的に削除するソフトがありますが、それはコマンドプロンプトで「del」コマンドを打ったものと同じ操作をするのでしょうか? それと、ファイルを右クリックして「削除」するのと、コマンドプロンプト上から「del」コマンドにより削除するのは同じ動作でしょうか? コマンドプロンプトからなら削除できないファイルが削除できると聞くので違うと思うのでですが? ご存知あれば教えていただければ幸いです。

  • コマンドプロンプトのFOR文がダブルクリックで実行できない

    お世話になります。 まず当方の環境は以下になります。 OS:Windows XP Pro SP2 C:\tempにtest.batというバッチファイルを作成し以下を記述しました。 FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i で、このtest.batをダブルクリックすると実行できないんです。 ただしコマンドプロンプトからでは問題なく実行できます。 また別PCではダブルクリック&コマンドプロンプトで問題なく実行できます。 どのようにすれば解決できるのかわからずに困っております。 どなたかアドバイスお願いできますでしょうか。

  • コマンドプロンプトの「%1」と「%~1」の違いがわからない

    コマンドプロンプトの「%1」と「%~1」の違いがわからない このサイトにhttp://ykr414.com/dos/bat.html %~1は「全ての引用句(")を削除して%1を展開する。」とありますがよくわかりません。 %1は入力されたファイルのフルパスだと思っているのですけど。 "%1"=%~1ということでしょうか。

  • コマンドプロンプトのコマンド、オプションについて

    コマンドプロンプトを使用して指定バイト数以上のファイルを検索したいのですが、 私の調べた限りでは適当なコマンドが存在しないように思われます。 Linuxコマンドであれば、 ”find . -name '*.bat' -size +30k” などとコマンドを入力すれば、30kバイト以上の"~.bat"を検索できると思うのですが、 コマンドプロンプトでそういった事はできるのでしょうか? ご存知の方、ご回答お願い致します。 また、コマンドプロンプトでは実現不可能であればその旨を教えて頂ければ幸いです。

  • コマンドプロンプトの不具合

    exeファイルの関連付けがおかしくなったのでコマンドプロンプトで修正しようとしたのですが、コマンドプロンプト自体も起動しなくなっていました。 ファイル名を指名して実行も試したのですが、このファイルを開けませんとのことで、打つ手がありません。 どうにかしてコマンドプロンプトを実行したいのですが、どなたか教えていただけませんか?

  • コマンドプロンプト

    あるEXEファイルの使用方法を見たところ、 『プロンプト上で、引数にクラック対象のEXEファイル名を与えて実行してください。』 となっていました。 自分なりにやってみたのですが、どうもうまくいきません。 詳しい人がいたらコマンドを教えてください。 お願いします。

専門家に質問してみよう