- ベストアンサー
バッチファイルでAPを終了させる書き方?
バッチファイル内で起動したAP(たとえばoutlook express)をAlt+F4で終了させる書き方を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
空白を含んだファイルの指定なので、"で囲まないといけませんね。 A.Run """C:\Program Files\Outlook Express\msimn.exe""", 1, False に修正すれば動くと思います。 あと、バッチファイル中で時間待ちをしたい場合は、 ping -n 11 localhost >NUL とかします。↑ 10秒待つ
その他の回答 (4)
- x1va
- ベストアンサー率26% (802/3006)
もう解決したようだけど、一応回答。 > taskkillの前に2秒ほど止める方が、いいですよね?適当なコマンドはありませんか? 自分自身にping撃てばいいです。pingは1秒おきに発信するという動作を利用したテクニックです。 ping -n 3 localhost 2ではなく3なのはコマンドを実行した直後に発信されるため。
補足
わざわざありがとう。 ついでにoutlook express の終わらせ方も教えて 次ではダメですか? taskkill /fi "username eq アカウント名" /im msimn.exe
- notnot
- ベストアンサー率47% (4900/10358)
>下記で実行すると、ステートメントの末尾(3行目)が不正でエラーになります。 いや、だから、 A.Run """C:\Program Files\Outlook Express\msimn.exe""", 1, False に修正すれば動くと書いたとおりです。
お礼
すみません。 "は2つじゃなくて3つだったんですね。 ありがとうございました。正常に動きました。
- nda23
- ベストアンサー率54% (777/1415)
WindowsならバッチではなくScriptにしてみては? Dim A, B, C Set A = CreateObject ("WSCript.Shell") A.Run "C:\Program Files\Outlook Express\msimn.exe", 1, False WScript.Sleep 2000 '2秒間待機 Set A = GetObject("WINMGMTS:\\.\ROOT\CIMV2") Do Set B = A.ExecQuery("SELECT * FROM Win32_Process WHERE name='msimn.exe'") If B.Count > 0 Then 'msimn.exe が起動していた場合 '** 必要ならここにFireFoxの起動を入れる ** For Each C In B C.Terminate 'プロセスを終了させる Next Exit Do 'ループを抜ける End If WScript.Sleep 100 '0.1秒間待機 Loop 上記をテキストエディタにコピーし、漢字空白を半角空白に変換して、 xxx.vbs として登録します。(xxxは任意) これをダブルクリックするか、コマンドプロンプトから"xxx"と入力 すれば起動します。 特別なRunTimeは不要で、JavaScritpで記述することも可能です。 バッチと異なり、細かい制御が可能です。 http://msdn.microsoft.com/ja-jp/library/cc364421.aspx http://msdn.microsoft.com/ja-jp/library/cc364427.aspx http://msdn.microsoft.com/ja-jp/library/cc364411.aspx
補足
漢字空白を半角空白に変換だけでk-opt.vbsで保存、実行すると次のエラーになり、関連づけを調べるとVBScript Script Fileとなっていました。 どう処置すれば良いでしょうか? 行: 3 文字: 1 エラー: この操作に対して指定されたファイルには、アプリケーションが関連付けられていません。 コード: 80070483 ソース: (null)
- x1va
- ベストアンサー率26% (802/3006)
OSが何なのか不明ですが、OEやalt + F4といったキーワードからWindowsと判断します。 本件はtaskkillコマンドで可能です。 使い方はコマンドプロンプト上でtaskkill /?で確認して下さい。
補足
すみません。Win xp sp3です。 次を参考にしたのですが、outlook expressが起動するだけで、うまくkillできません。 http://ykr414.com/dos/ 作成したコマンド。 start "" "C:\Program Files\Outlook Express\msimn.exe" taskkill /fi "username eq アカウント名" /im msimn.exe exit taskkillの前に2秒ほど止める方が、いいですよね?適当なコマンドはありませんか? 「このバッチファイルが欲しい理由」 Firefoxを3.0から3.5にバージョンアップすると自動接続できなくなったので、outlook expressを起動して接続したい。
補足
下記で実行すると、ステートメントの末尾(3行目)が不正でエラーになります。 僕はバッチファイルの方が判りやすいのですが、msimn.exeの終わらせ方が判りません。 Dim A, B, C Set A = CreateObject ("WSCript.Shell") A.Run ""C:\Program Files\Outlook Express\msimn.exe"", 1, False WScript.Sleep 2000 '2秒間待機 Set A = GetObject("WINMGMTS:\\.\ROOT\CIMV2") Do Set B = A.ExecQuery("SELECT * FROM Win32_Process WHERE name='msimn.exe'") If B.Count > 0 Then 'msimn.exe が起動していた場合 '** 必要ならここにFireFoxの起動を入れる ** For Each C In B C.Terminate 'プロセスを終了させる Next Exit Do 'ループを抜ける End If WScript.Sleep 100 '0.1秒間待機 Loop