Javaを使用してWindows cmdコマンドを制御する小さな経験

4635 ワード

Javaでバッチ・ファイルを起動したり、Pythonなどの他のプログラムを起動したりする必要があります.最も簡単な方法は、JavaでWindows cmdコマンドを実行することです.この方面のネット上の経験が多いです.例えば、次のような内容です.
JAvaのRuntime.getRuntime().exec(commandStr)は、cmd命令の実行を呼び出すことができる.cmd/c dirはdirコマンドを実行した後、コマンドウィンドウを閉じます.cmd/k dirはdirコマンドを実行した後、コマンドウィンドウを閉じない.cmd/c start dirは新しいウィンドウを開いてdirコマンドを実行し、元のウィンドウは閉じます.cmd/k start dirは新しいウィンドウを開いた後にdir命令を実行し、元のウィンドウは閉じません.cmd/?ヘルプ情報を表示します.以下に、一般的なコマンドをいくつか示します.1、gpedit.msc-----グループポリシー2、sndrec 32------レコーダー3、Nslookup-----IPアドレス検出器4、explorer------リソースマネージャを開く5、logoff------ログアウトコマンド6、tsshutdn------60秒カウントダウンシャットダウンコマンド7、lusrmgr.msc-----ネイティブユーザーとグループ8、services.msc---ローカルサービス設定9、oobe/msoobe/a----XPがアクティブ化されているかどうかを確認する10、notepad---手帳11、cleanmgr------ゴミ整理12、net start messenger---メッセージングサービス開始13、compmt.msc---コンピュータ管理14、net stop messenger------メッセージングサービス停止15、conf--------起動netmeeting 16、dvdplay------DVDプレーヤー17、charmap------スタート文字マッピングテーブル18、diskmgmt.msc---ディスク管理ユーティリティ19、calc-------スタートコンピュータ20、dfrg.msc------ディスクフラグメント整理プログラム21、chkdsk.exe-----Chkdskディスク検査22、devmgmt.msc---デバイスマネージャ23、regsvr 32/u*.dll----停止dllファイル運転24、drwtsn 32-----システムドクター25、rononce-p------15秒シャットダウン26、dxdiag------DirectX情報27、regedt------32-レジストリエディタ28、Msconfig.exe-システム構成ユーティリティ29、rsop.msc-グループポリシー結果セット30、mem.exe-------メモリ使用状況31、regedit.exe-登録テーブル32、winchat-------XPローカルエリアネットワークチャット33、progman------プログラムマネージャ34、winmsd-----システム情報35、perfmon.msc-----コンピュータ性能モニタリングプログラム36、winver------Windowsバージョン37、sfc/scannow------エラーをスキャンして38、taskmgr------タスクマネージャ(2000/xp/2003 39、winver------Windowsバージョン40、wmimt.msc-----windows管理アーキテクチャ(WMI)を開く41、wupdmgr----windows更新プログラム42、wscript-----windowsスクリプトホスト設定43、write-----タブレット44、windsd-----システム情報45、wiaacmgr------スキャナーとカメラウィザード46、winchat-----XPローカルエリアネットワークチャット47、mem.exe-----メモリ使用状況48、Msconfig.exe-----システム構成ユーティリティ49、mplayer 2-------簡易widnows media player 50、mspain------グラフィックボード51、mstsc-----リモートデスクトップ接続52、mplayer 2------メディアプレーヤー53、magnify------拡大鏡ユーティリティ54、mmc-----オープンコンソール55、mobsync-----同期コマンド56、dxdiag------DirectX情報57、drwtsn 32------システム医58、devmgmt.msc---設備管理理器59、dfrg.msc-----ディスクフラグメント整理プログラム60、diskmgmt.msc-----ディスク管理ユーティリティ61、dcomcnfg-----システムコンポーネントサービス62、ddeshare-----DDE共有設定63、dvdplay-----DVDプレーヤー64、net stop messenger----信使サービス65、net start messenger----信使サービス66、notepad-----開封手帳67、nslookup------ネットワーク管理ツールウィザード68、ntbackup------システムバックアップとリストア69、narrator------画面「説明者」70、ntmmgr.msc----モバイルストレージマネージャ71、ntmsoprq.msc---モバイルストレージ管理者操作要求72、netstat-an---(TC)コマンドチェックインタフェース73、syncapp-----パケット74、sysedit-----システム構成エディタ75、sigverif-----ファイル署名検証プログラム76、sndrec 32------レコーダ77、shrpubw------共有フォルダ78、secpol.msc-----ローカルセキュリティポリシー79、syskey------システム暗号化は、いったん暗号化されると解けず、windows xpシステムの二重パスワード80、services.msc---ローカルサービス設定81、Sndvol 32------音量制御プログラム82、sfc.exe-------システムファイルチェッカー83、sfc/scannow------windowsファイル保護84、tsshutdn------60秒カウントダウンシャットダウンコマンド85、tourstart-----xpプロファイル(インストール完了後に現れるローミングxpプログラム)86、taskmgr------タスクマネージャ87、eventvwr------イベントビューア88、eudcedit-------造字プログラム89、explorer------オープンリソースマネージャ90、packager------オブジェクトパッケージプログラム91、perfmon.msc----コンピュータ性能モニタプログラム92、progman------プログラムマネージャ93、regedit.exe----レジストリ94、rsop.msc-------グループポリシー結果セット95、regedt 32------レジストリエディタ96、rononce-p------15秒シャットダウン97、regsvr 32/u*.dll----dllファイルの実行を停止98、regsvr 32/u zipfldr.dll------ZIPサポート99、cmd.exe-----CDDコマンドプロンプト100、chkdsk.exe-----Chkdskディスクチェック101、certmgr.msc----証明書管理ユーティリティ102、calc---------起動コンピュータ103、charmap------起動文字マッピングテーブル104、cliconfg------SQL SERVERクライアントネットワークユーティリティ105、Clipbrd------クリップボードビューア106、conf--------netmeeting 107、compmt.msc---コンピュータ管理108、cleanmgr------ゴミ整理109、ciadv.msc---インデックスサービス手順110、osk--------スクリーンキーボード111、odbcad 32------ODBCデータソースマネージャ112、oobe/msoobe/a----XPがアクティブ化されているかどうかをチェックする113、lusrmgr.msc----ネイティブユーザーとグループ114、logoff------ログアウトコマンド115、iexpress-木馬バンドルツール、システムは116、Nslookup---IPアドレス検出器117、fsmgmt.msc-----共有フォルダマネージャ118、utilman------アシストツールマネージャ119、gpedit.msc-----グループポリシー120、explorer--------エクスプローラを開く
しかし、この間実験をしていたとき、バカな問題がありました.処理するデータが多いので、多くのcmdウィンドウを起動しました.上記の説明に従って、「cmd/c start」を実行すると、cmdウィンドウを閉じることができるはずですが、実験中にcmdウィンドウで起動したのはバッチファイルで、バッチファイルが終了すると「任意のキーで続行」を提示します.ああ、それからそこに止まりました.
見てみると、1つのcmdウィンドウが1.5 MB程度のメモリを占有しているので、サーバーに残っている8 Gメモリ(多くの人が使用しているので、リソースが緊張しているような気がする)はすぐにいっぱいになります.解決方法も簡単で、現在稼働中のcmdウィンドウを一定時間後に終了することができ、実行するだけです.
cmd /c taskkill /f /im cmd.exe

コマンドを使用します.完全なコードセグメント:
String commandStrDot = new String("cmd /c taskkill /f /im cmd.exe");
System.out.println(commandStrDot);
try {
    Runtime.getRuntime().exec(commandStrDot);
} catch (IOException e) {
    e.printStackTrace();
}

これっぽっちの小さな経験だけで,記録しておきます.