FORコマンドで遊んでみる。 ― 2008年08月04日 01時52分38秒
いや、実用性はないんだけども、前のエントリで覚えたばかりのFORコマンドと、ちょっと前に作ったなんちゃってコマンドを組み合わせて遊んでみたり。
chkconfig.jsの--detailを連続で
chkconfig.jsにオマケでつけてた--detailオプション、サービス名を指定しないと使えない仕様なんだけども、これをFORコマンドと組み合わせて使ってみると。
コマンドラインからcscript付きで指定するとちょっと冗長なので、ラッパーのバッチファイルを作っておくことにしよう。こんな感じで、「chkconfig.bat」とか「chkconfig.cmd」とか。
@echo off cscript //nologo "%~dP0\scripts\chkconfig.js" %*dara-jは特定のディレクトリにバッチ(というか.cmdファイル。単なる好みだけど)を設置することにしていて、そこにサブディレクトリ「scripts」を切って.jsはそこに置くようにしているので、chkconfig.jsのパス指定で「%~dP0\scripts\」としている。んで、バッチをおいたディレクトリにパスを通している。
で、chkncofig --listでサービスを列挙した後にfindstr Manualで手動起動設定になっているサービスのみに絞り込んで、それらに対してchkconfig --detailを適用してみる。
C:\Documents and Settings\dara-j>for /f "tokens=1" %d in ('"chkconfig --list | f indstr Manual"') do @chkconfig --detail %d サービス名 : AppMgmt 表示名 : Application Management スタートアップの種類 : 手動 状態 : 停止中 説明 : 割り当て、公開、削除などのソフトウェアのインストール サービスを供給します。 サービス名 : aspnet_state 表示名 : ASP.NET 状態サービス スタートアップの種類 : 手動 状態 : 停止中 説明 : ASP.NET の out-of-process セッション状態のサポートを提供します。このサービスが 中止されると out-of-process 要求は処理されません。このサービスが無効になると、こ のサービスに明示的に依存しているサービスはすべて開始できなくなります。 : (中略) : サービス名 : xmlprov 表示名 : Network Provisioning Service スタートアップの種類 : 手動 状態 : 停止中 説明 : 自動ネットワーク提供のための XML 構成ファイルをドメインごとに管理します。 C:\Documents and Settings\dara-j>結構重たい上なんの役にも立たないんだけども。
FORコマンド中で「tokens=1」と指定しているのは、chkconfig --listの出力結果からサービス名のみを抽出するため。FORコマンドの既定の区切り文字(空白とタブ、らしい)で各行がトークン単位に分割されるのだが、chkconfigの出力の場合は、先頭がサービス名になるのでそのように指定している。
killでメモ帳を全て終了
今度は多少は使い道あるかなぁ。こちらの「ps.jsとps.cmd / kill.cmd」で作ったpsとkillを使って、特定のプロセスをまとめて終了させると。
まず適当にnotepadをいくつか起動する。
C:\Documents and Settings\dara-j>ps | findstr notepad 1456 5788 dara-j 4708 4708 0:00:00 notepad.exe 5316 5788 dara-j 4852 4852 0:00:00 notepad.exe 4228 5788 dara-j 4716 4716 0:00:00 notepad.exe 4992 5788 dara-j 4720 4720 0:00:00 notepad.exe 5544 5788 dara-j 4696 4696 0:00:00 notepad.exe C:\Documents and Settings\dara-j>こんな感じで5個のメモ帳が動いてるとして、
C:\Documents and Settings\dara-j>for /f "tokens=1" %d in ('"ps | findstr notepad "') do @kill %d C:\Documents and Settings\dara-j>ってな感じでnotepad.exe全殺し。やっぱ役に立たないかな。
コメント
_ たけチン ― 2008年09月29日 11時17分09秒
_ dara-j ― 2008年09月29日 12時55分49秒
実はコメントいただくまでpgrepやpkill知らなかったのですが、バッチファイルだけで簡単にできそうなのでやってみました。
http://dara-j.asablo.jp/blog/2008/09/29/3788378 として別エントリ起こしたので、そちらをごらんいただければ幸いです。
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
トラックバック
このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2008/08/04/3671885/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
最低限はプロセス名称でのgrepができればいいのですが、、、
例) pkill 'iexplore.exe'
---------------- 参考 -------------------
【名前】
pgrep, pkill - 名前または他の属性によるプロセスの検出また は
シグナル送信
【形式】
pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-
g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-
G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c
ctidlist] [-z zoneidlist] [pattern]
pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-
g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-
G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c
ctidlist] [-z zoneidlist] [pattern]
【機能説明】
pgrep ユーティリティはシステム上のアクティブなプロセスを調べ
て、コマンド行に指定した条件を満たす属性を持つプロセスのプロ
セス ID を報告します。各プロセス ID は 10 進数値として出力さ
れ、プロセス ID は区切り文字 (デフォルトは復帰改行) で区切ら
れます。コマンド行で属性オプションに値を指定するときは、複数
の値をコンマで区切って指定できます。