• ベストアンサー

複数ファイルの処理が終わった後シャットダウンしたい

タイトル通りです 以下の記述をしたbatに複数のファイルをドラッグアンドドロップし、別のbatに処理を投げています for %%a in (%*) do C:\Users\~~~.bat %%a すべてのファイルの処理が終わった後、windowsをシャットダウンしたいのですが、やり方が分かりません 何か方法があれば教えて下さい

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.4

動いているようなので見逃してましたが、call を入れてください。 for %%a in (%*) do call C:\Users\~~~.bat %%a shutdown /s /t 0 基本的に、バッチからバッチを呼び出す場合は、call します。

gedfactor
質問者

お礼

ありがとうございます 意図した通りに動きました 分かりにくい説明から解決まで導いていただき本当にありがとうございました

その他の回答 (4)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.5

たぶん、batの処理が終わらないうちに shutdown が実行されてしまい、しかし、shutdown は、まだ何かが実行中であることを検出したので、動作を中止した(シャットダウンしなかった)。 ということだと思います。 次の方法で、呼び出しているバッチが終わってから次の処理に移るように書けばよいのではないでしょうか。 http://midilin.sakura.ne.jp/midilin/php/ppblog/?UID=1291775652

gedfactor
質問者

お礼

ありがとうございます こちらの方法でも試してみましたがやはり動かないようでした notnotさんの提示していただいた方法で動くようになりました

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.3

私>もうしそうじゃ無くて、C:\Users\~~~.batから呼び出しているプログラムの終了を待たずに次の処理に進んでしまうと言うことなら、 に対して、 >呼び出しているプログラムは下記ページのAutoEncode_X3.batです と答えていると言うことは、「batから呼び出しているプログラムの終了を待たずに次の処理に進んでしまう」というのが問題なわけですか? また、 >シャットダウンのコマンドを試したのですがシャットダウンできませんでした ということですが、shutdown /s /t 0 を入れるとどういう状態になりますか?エラーメッセージが出ているとかですか?それともコマンドは正常に終了するけど、シャットダウンが始まらないと言うこと??シャットダウンが始まるけど途中で止まる? なにが問題なのか分からないとアドバイスできないです。

gedfactor
質問者

補足

分かりにくくてすみません 呼び出しているbatの処理は終わります 例えば3つのファイルをドロップすると、3つともエンコードはされるのでプログラムの終了を待たずに次の処理に進んでしまう、というわけではないです 2行目にshutdown /s /t 0を入れるとシャットダウンは始まりません 何のエラーメッセージも出ないです

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

シャットダウンのコマンドが分からないというのが質問内容ですか? shutdown /s /t 0 です。 もうしそうじゃ無くて、C:\Users\~~~.batから呼び出しているプログラムの終了を待たずに次の処理に進んでしまうと言うことなら、それはそのプログラムの問題です。何というプログラムですか?

gedfactor
質問者

補足

ありがとうございます シャットダウンのコマンドを試したのですがシャットダウンできませんでした 呼び出しているプログラムは下記ページのAutoEncode_X3.batです EDCBと自動CMカット+エンコード導入日記 part 2 : オタクの徒然日記 http://blog.livedoor.jp/fles/archives/31345088.html 具体的には拡張子.tsの動画ファイルを複数ドラッグアンドドロップし、1つずつ.mp4にエンコードするような仕組みです エンコードがすべて終わった段階でパソコンをシャットダウンしたいです

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.1

御質問のコマンドの次の行に shatdown と書けばいいのです。このコマンドにはいろいろオプションがありますから下記を参照して下さい。

参考URL:
http://www.k-tanaka.net/cmd/shutdown.php
gedfactor
質問者

補足

ありがとうございます shutdown -s -t 0 とだけ記述したbatファイルを別途作成し for %%a in (%*) do C:\Users\~~~.bat %%a call C:\Users\~~~シャットダウン.bat とやってみましたがやはりシャットダウンはしませんでした ドラッグアンドドロップ用のbatをダブルクリックするとシャットダウンはしたのですが、別のbatでの処理が終わった後にシャットダウンはしませんでした

関連するQ&A

  • バッチファイル 2ファイルをfor /f処理したい

    バッチファイルで別の2つのファイルを読み込んでfor /f処理するには 変換前のファイルのファイル名と 変換後のファイルのファイル名が それぞれ別のファイルに書かれていて この2つのファイルを読み込んで リネームするバッチファイルを 記述したいのですが 2つのfor /fを使った場合、 一方が他方にネストされてしまうのですが このような場合は どのように記述するのでしょうか。 例えば、 変換前のファイル名が書かれたファイル(s.txt)と 変換後のファイル名が書かれたファイル(d.txt) がある場合、 abc.txtをqrs.txt d f.txtをtuw.txt ghi.txtをx z.txt  : にリネームしたいのですが もちろんtest1.batではうまくいきません。 ---test1.bat------------------- for /f %%a in (s.txt) do for /f %%b in (d.txt) do ren "%%a" "%%b" ------------------------------ ---s.txt---------------------- abc.txt d f.txt ghi.txt : ---d.txt---------------------- qrs.txt tuw.txt x z.txt : ------------------------------ 以下の sd.txt のように1つのファイルにして test2.bat のようにすればできますが s.txt と d.txt の2つのファイルのままで処理するには どのように記述すればよいのでしょうか。 ---test2.bat------------------- for /f "tokens=1,2 delims=," %%a in (sd.txt) do ren "%%a" "%%b" ---sd.txt---------------------- abc.txt,qrs.txt d f.txt,tuw.txt ghi.txt,x z.txt : ------------------------------- よろしくお願いします。(Windows7)

  • batファイルで、引数のファイルリストを作りたい。

    あるbatファイルを作成しようとしています。 目的は、複数のファイルを選択して、batファイルにドラッグすると、そのパスをテキストファイルに書き込んでほしいのです。 for文を使おうと思ったのですが、以下の内容だとうまくいきません。 type NUL > "./test.txt" for %%i in (%*) do echo %%i >> "./test.txt" 空のファイルは作成されるのですが、ファイル名は記録されません。 何か方法があれば教えていただけないでしょうか?

  • DOSのバッチファイルでカレントフォルダを取得するには?

    現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。 おおまかな流れとして  1.ファイルのバックアップ  2.test.exeの引数にファイルのパスを渡す といった事をしたいのですが、バッチファイルにドラッグ&ドロップするとカレントフォルダがC:\Documents and Settings\user\になってしまいます。 バッチファイルのある場所をカレントフォルダとするにはどうすればよいのでしょうか。 以下カレントフォルダを確認した結果です。 OS:Windows2000 実行バッチのパス: C:\Documents and Settings\user\デスクトップ\test.bat ---test.bat---- @echo off cd pause test.bat直接起動 C:\Documents and Settings\user\デスクトップ test.batにファイルをD&D C:\Documents and Settings\user 伝わりづらくて申し訳ございません。 宜しくお願い致します。

  • bat処理

    batファイルを使ってCドライブのユーザーのtempフォルダの中の Excelファイルxlsを一括削除したい Osはwin7とxp for /d %%a in (subdir*) do del "%%a\*.jpg" うまく動きません、よろしくお願いします。

  • バッチファイルプログラム(拡張子)

    あるデータをバイナリに変換するhoge.exeがあります。 これをドラッグ&ドロップで一括処理したいと考えており、下記のようなバッチファイルを作成しました。 %~d1 cd %~dp1 for %%q in (%*) do a.exe %%q > "%%q.bin" このプログラムだと、 a.movというファイルをD&Dするとa.mov.binというファイル出力となってしまいます。 a.binというファイルを出力させるにはどのように 変更すれば良いでしょうか? なお、複数ファイルの処理に対応したいので 最後を%~n1.binにするとうまいきません。

  • 複数のファイルに対し同じ処理を行う方法

    複数のファイルのエクセルファイルに対し、同じ処理を行うマクロを教えてほしいです。 処理するファイル数が一定でないため、現在はDo While~Loop構文を用い強引に処理しています。 しかし、この方法では処理が終わる(アクティブファイルが無くなる)とエラーメッセージが出るため、煩わしいです。 Do Until構文で、終了条件を指定したらよさそうなのですが、どのように書けばいいのかわかりません。 現在記述しているものは以下です。 -------------------------------------------------------- Sub 連続処理() Dim BookName As String Dim PathName As String PathName = "D:\A1\連続処理\" BookName = Dir(PathName & "*.xls")   Do Until BookName = ""  Workbooks.Open PathName & BookName  BookName = Dir() Loop Do While (1)   ・   ・(処理作業を行うマクロ)   ・ Workbooks(ActiveWorkbook.Name).Close savechanges:=True Loop End Sub

  • コマンドプロンプトのコマンド処理が途中で終わる2

    お世話になります。 以前 http://qa.itmedia.co.jp/qa9168537.html にて質問及び解決させていただいたのですが、 確認不足で思った処理にならない部分がありました。 上記URLの内容を抜粋します。 ============================================================= メインbat内にサブ1bat、サブ2batが存在し以下構成になっています。 (サブ1batで作成したデータを用いてサブ2batの処理を行います。) 問題は メインbatを実行した場合、サブ1batが実行された後にサブ2batが実行されず終わってしまいます。 (メインbatにサブ1batだけ、メインbatにサブ2batだけだと、各々問題なく処理が行われることは確認。) 以下、メインbat処理----------------------------------- setlocal enabledelayedexpansion FOR /f "delims=, tokens=1-3" %%i in (テキストファイルパス) do ( IF "%%i"=="1" ( サブ1bat %%j %%k ) ) endlocal setlocal enabledelayedexpansion FOR /f "delims=, tokens=1-3" %%i in (テキストファイルパス) do ( IF "%%i"=="1" ( サブ2bat %%j %%k ) ) endlocal ---------------------------------------- ※テキストファイルパスはループのもとになっているcsvファイルです。 ※各サブbatは戻り値を返しません。 ============================================================= この処理について サブ1bat及びサブ2batそれぞれの呼び出しで callを先頭に記述する必要があると以前回答いただき 処理としてはサブ1サブ2が全て処理されました。 そこで今回再動作検証した時にFORでループする件数が5件あったのですが、 5件だとサブ1batだけ5件処理が行われ、サブ2batの処理は行われないままメインbatが終了してしまいました。 FORでループする件数が1件だと問題ないなくサブ1サブ2それぞれ実行されたのですが、 複数件あると実行されませんでした。 どこに問題があるのかわからないので困っています。 宜しくお願いいたします。。

  • .batファイルから複数ユーザが同時にファイルを開くには?

    win2000 使用です。 .bat を実行すると、ファイル内で指定されたファイル(主にエクセル,アクセス)を開くという内容で書きます。 ここで"指定されたファイル"ですが、 ネットワーク上のファイルサーバで共有されているものです。 一人目のユーザが.batを実行し ファイルAを編集中とします。 二人目以降のユーザが同じく、.batを実行しファイルAにアクセス使用とすると"他のプロセスが使用中です"とメッセージが表示され、複数のユーザで同時にファイルAを開く事ができません。 GUIのエクスプローラからマウスでクリックすると"読み取り専用"で開く事ができるわけですが、.batファイルからも読み取り専用ファイルで開く等して、 複数のユーザが同時に同じファイルの内容を参照するには、どうすればよいのでしょうか?

  • ファイル移動処理(コマンドプロンプト batファイル)

    ファイル移動処理(コマンドプロンプト batファイル) .batファイルでファイル名に日付がついたファイル(例:yyyymmdd_test.txt)の最新日付から2世代前のファイルまでをディレクトリに移動するような処理を記述したいのですが、やり方がわかりません。 例) 20100924_test.txt →移動対象外 20100925_test.txt →移動対象外 20100926_test.txt →移動対象 20100927_test.txt →移動対象 20100928_test.txt →移動対象 今、この下記の様に記述をしていますが意図した処理になりません。 どなたか助言を頂けないでしょうか? -------------------------------------------------------- mkdir temp set num=0 for %%f in (????????_test.txt) do ( set /a num+=1 if %num%==1 move %f% \temp\%f if %num%==2 move %f% \temp\%f if %num%==3 move %f% \temp\%f )

  • バッチファイルで複数のファイルを処理させたい

    バッチファイルを書くことで、複数のwavファイルを同時にWindows Media Encoder 9のエンコードスクリプトを用いて可逆圧縮したいと思っているのですが、バッチファイルでドロップした複数のファイルをまとめて処理することは可能なのでしょうか? もし可能なのであれば、その方法をご教示下さい。お願いします。