記事
· 18 hr 前 2m read

パイプを使って OS の外部コマンドの出力を取得する方法

これは InterSystems FAQ サイトの記事です。

こちらの記事では、コマンド・パイプデバイスを使用して、外部コマンドの出力を取得する方法をご紹介します。

以下のように行います。

★コマンド出力を取得する例:

USER>kill
USER>set cmd="netstat -anp tcp"
USER>set pipe=##class(%File).%New(cmd)
 
USER>write pipe.Open("rq")
1
USER>while 'pipe.AtEnd { write !,pipe.ReadLine() }
アクティブな接続
  プロトコル  ローカル アドレス          外部アドレス        状態
  TCP    0.0.0.0:23             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
(中略)
  TCP    192.168.172.1:139      0.0.0.0:0              LISTENING
USER>


★コマンドのエラー出力を取得する例:

USER>kill
USER>set cmd="net use \\testsvr\public /user:testuser "_^pwd
USER>set cmd="net use \\testsvr\public /user:testuser "_^pwd_"  2>&1 "
USER>set pipe=##class(%File).%New(cmd)
 
USER>write pipe.Open("rq")
1
USER>while 'pipe.AtEnd { write !,pipe.ReadLine() }
 
システム エラー 1219 が発生しました。
 
同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続は許可されません。
サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。
 
USER>


詳細は以下のドキュメントをご覧ください。
コマンド・パイプ デバイスを使用する方法について


enlightened【ご参考】
$ZF(-100) で実行したコマンドの結果をファイルに出力する方法

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください