Main Content

system

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

説明

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

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

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

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

[status,cmdout] = system(___,EnvName1,EnvVal1,...,EnvNameN,EnvValN) は、オペレーティング システム環境変数の値を設定します。EnvName が環境変数として存在する場合、system はその現在の値を EnvVal に置き換えます。EnvName が存在しない場合、system は、EnvName という名前の環境変数を作成し、これに EnvVal を代入します。

system は、EnvNameEnvVal を変更せずにオペレーティング システムに渡します。EnvVal 内の ;/:$% などの特殊文字は拡張されません。

すべて折りたたむ

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

command = 'cd';
[status,cmdout] = system(command)

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

command = '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 にユーザーのリストを返します。

command = 'who';
[status,cmdout] = system(command);
status
status = 0

入力引数

すべて折りたたむ

オペレーティング システム コマンド。string または文字ベクトルとして指定します。command は、システム シェルで実行されますが、MATLAB を起動したシェルとは異なる場合があります。複数のオペレーティング システム コマンドを指定するには、cmdsep を使用してプラットフォーム固有のコマンド区切り文字を指定します。

例: "dir"

例: "ls"

環境変数の名前。string スカラーまたは文字ベクトルとして指定します。

name の最大文字数は、215 - 2、すなわち 32,766 です。name= 文字を含む場合、system はエラーをスローします。name に = を含む環境変数の動作は、適切に定義されません。

例: "PATH"

環境変数の値。string スカラー、文字ベクトル、または missing として指定します。値を missing に設定して環境変数を削除します。

例: "C:\TEMP"

出力引数

すべて折りたたむ

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

  • command がアンパサンド文字 (&) を含む場合、statuscommand 開始時の終了ステータスです。

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

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

制限

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

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

詳細

すべて折りたたむ

Windows のヒントと制限事項

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

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

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

    command の末尾に & 文字を含めると、cmdout は空になります。

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

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

UNIX のヒントと制限事項

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

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

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

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

    command の末尾に & 文字を含めると、cmdout は空になります。

バージョン履歴

R2006a より前に導入

すべて展開する