Main Content

system

オペレーティング システム コマンドを実行し、出力を返す

説明

status= system(命令)は、オペレーティング システムを呼び出して指定されたコマンドを実行します。この操作はコマンドの実行が終了するまで待機してからコマンドの終了ステータスを変数statusに返します。

関数は、新しい cmd/シェル プロセスを開始し、命令を実行し、プロセスを終了して、MATLAB®プロセスに戻ります。命令で実行されたシステム環境への更新は、MATLAB には表示されません。

[status,cmdout] =系统(命令)は、さらにコマンドの出力をcmdoutに返します。この構文は、dirなど、ユーザー入力を必要としないコマンドで最も役に立ちます。

[status,cmdout] =系统(命令,'-回声')は、コマンド出力を MATLAB コマンド ウィンドウにも表示 (エコー) します。この構文は、ユーザー入力を必要とし、MATLAB コマンド ウィンドウで正常に実行されるコマンドで最も役に立ちます。

すべて折りたたむ

cdコマンドを使用して現在のフォルダーを表示します。statusがゼロの場合はコマンドが正常に完了したことを示します。MATLAB は現在のフォルダーを含む文字ベクトルをcmdoutに返します。

命令='cd';[状态,cmdout] =系统(命令)

mynewという名前のフォルダーを作成するには、mkdirコマンドを呼び出し、終了ステータスを変数に保存します。statusが 0 の場合は、mynewフォルダーがにさたことをています。

命令='mkdir mynew';status = system(command)

notepadコマンドにアンパサンド (&) を追加して、Microsoft®のメモ帐を開き、その直後に終了ステータスを MATLAB に返します。statusが 0 の場合は、メモ帳が正常に起動したことを示しています。

status = system('notepad &')

dirコマンドをし终了とコマンド出力表示します。cmdoutにはコマンド出力が含まれます。

[~,cmdout] = system('dir');

badcmdというコマンドの実行を試行します。次に、statusresultsの出力引数を表示します。無効なコマンドを呼び出すと、statusは失敗したことを示し、resultsには DOS エラー メッセージが含まれます。

[status,results] = system('badcmd')

現在ログインしているすべてのユーザーを一覧表示し、コマンドの終了ステータスと出力を保存します。その後でステータスを表示します。statusがゼロの場合、コマンドが正常に完了したことを示します。MATLAB® はcmdoutにユーザーのリストを返します。

命令='who';[状态,cmdout] =系统(命令);status
status = 0

入力引数

すべて折りたたむ

オペレーティング システム コマンド。string または文字ベクトルとして指定します。命令は、システム シェルで実行されますが、MATLAB を起動したシェルとは異なる場合があります。

例:'dir'

例:'ls'

出力引数

すべて折りたたむ

コマンド終了ステータス。0または非ゼロの整数として返されます。コマンドが正常に終了した場合、status0です。それ以外の場合、statusは非ゼロの整数です。

  • 命令がアンパサンド(&)を含む场合,status命令開始時の終了ステータスです。

  • 命令がアンパサンド(&) を含まない場合、status命令完了時の終了ステータスです。

オペレーティング システム コマンドの出力。文字ベクトルとして返されます。システム シェルでは Unicode®非対応文字が正しく表示されない場合があります。

制限

  • MATLAB は、オペレーティング システムのシェルが対応しているエンコードに文字を変換します。命令の出力は、コマンド ウィンドウに表示するため MATLAB エンコードに変換されます。コマンドから予期しない結果が出力された場合、命令引数をのに直接入力,システムによって入力どうどう处理されるかかををくださいくださいください

  • コールバック関数は、systemコマンドの実行中には呼び出されません。

詳細

すべて折りたたむ

视窗のヒントと制限事項

  • MS-DOS®は UNC パス名をサポートしていません。そのため、現在のフォルダーが UNC パス名を使用している場合は、現在のフォルダーに依存している DOS命令と一緒にsystemを実行すると失敗します。この制限を回避するには、systemを呼び出す前に、ドライブにマッピングされたフォルダーに変更します。

  • systemコマンドで変数オーバーライドすることができたとえば,次のコード変数路径myPathに設定され、続いてシステム コマンドdosCommandがその値を使って呼び出されます。

    system(['set PATH=' myPath ' && ' dosCommand])
  • オペレーティング システム コマンドをバックグラウンドで実行するには、命令引数の末尾に文字&を含めます。たとえば、'notepad &'と入力します。終了ステータスはすぐに変数statusに返されます。この構文は、実行中にユーザーによる対話型コマンドの入力を必要とし、MATLAB コマンド ウィンドウでは正常に実行されないコンソール プログラムで役に立ちます。

    命令の末尾に&文字を含めると、cmdoutは空にます。

  • systemコマンドは、MATLAB の起動に使用するのと同じ資格情報を使用します。管理者権限を必要とするプログラムmyprogram.exeの资格をするは,以下入力します。

    system('cmd /C myprogram.exe');

UNIXのヒントと制限事項

  • MATLAB はシェル プログラムを使用して、与えられたコマンドを実行します。ユーザー システムの環境変数を確認することによって、どのシェル プログラムを使用するかを定義します。MATLAB は、最初に変数MATLAB_SHELLを確認し、空または定義されていない場合は、SHELLを確認します。SHELLが空または定義されていない場合、MATLAB は/bin/shを使用します。

  • 既定では、関数systemstdin命令にリダイレクトします。このリダイレクトでは、MATLAB スクリプト コマンドやキーボードの先行入力バッファーも、関数systemの実行時に起動されるコマンドに渡されます。この動作により、systemが直ちをしない场合に破损することがあり。stdinおよび先行入力のリダイレクトを無効にするには、起動されるコマンドの呼び出しに書式付きテキスト< /dev /nullを含めてください。

  • systemコマンドで、環境変数をオーバーライドすることができます。構文は UNIX®シェルによって異なります。たとえば、BASH シェルを使用する場合、次のコードを使用すると変数路径myPathに設定され、続いてシステム コマンド命令がその値を使って呼び出されます。

    system(['export PATH=' myPath ' ; ' command])
  • オペレーティング システム コマンドをバックグラウンドで実行するには、命令引数の末尾に文字&を含めます。たとえば、'emacs &'と入力します。終了ステータスはすぐに変数statusに返されます。この構文は、実行中にユーザーによる対話型コマンドの入力を必要とし、MATLAB コマンド ウィンドウでは正常に実行されないコンソール プログラムで役に立ちます。

    命令の末尾に&文字を含めると、cmdoutは空にます。

バージョン履歴

R2006a より前に導入