exec

【Tera Term マクロ言語】コマンドリファレンス

exec 機能

[その他のコマンド]

アプリケーションを起動します。

コマンドライン

exec <command line> [<show> [<wait> [<current directory>]]]

機能説明

コマンドライン文字列 <command line> に従い、アプリケーションを起動します。
<command line>
コマンドプロンプトで実行するのと同様のコマンドラインを指定します。

64bit Windows 上でマクロを実行している場合、WOW64 に対応したアプリケーションを起動すると思わぬ動作をすることがあります。

ttpmacro.exe は 32bit なので、32bit のアプリケーションが起動します。
アプリケーションによっては 64bit OS 上で 32bit のプロセスが起動されると、64bit のプロセスを起動し直すことがあります。
このため <wait> を指定しても、マクロが起動した 32bit のアプリケーションはすぐに終了してしまうため、意図せず次のマクロコマンドに進んでしまうことがあります。

この現象を回避するには、以下の使用例にあるとおり sysnative エイリアスを用いて、ネイティブのシステムディレクトリのアプリケーションを起動してください。

なお、起動したアプリケーションを起動の戻り値の扱いは、次のとおりです。
バージョン戻り値の扱い
OSS 化以降~4.62戻り値を扱わない
4.63~4.102<wait> に 1 が指定された時のみ、アプリケーションの終了コードを返す
4.103以降<wait> の指定内容または省略によって <result> に値を返す
[<show>]
<show> パラメータには以下の文字列を指定することができます。
文字列指定内容
hideウインドウを隠します。
minimizeウインドウを最小化します。
maximizeウインドウを最大化します。
show指定しない場合と同じ動作(デフォルト)の挙動をします。
[<wait>]
<wait> パラメータに 1 を指定すると、起動したアプリケーションが終了するまで待ちます。
バージョン 4.63 以降 4.102 まで
オプション <wait> が 1 の場合に、アプリケーションの終了コードが <result> へ格納されます。
オプション <wait> が 0 または省略された場合、アプリケーションを起動するのみで <result> は変更しません。
バージョン 4.103 以降
オプション <wait> が省略されたか、指定された値によって、システム変数 <result> へ格納する値が変わります。
<wait>の指定値<result>の数値<result>の意味
0*1-1アプリケーションの起動に失敗した。
0アプリケーションの起動に成功した。
1-1アプリケーションの起動に失敗した。
-1以外アプリケーションの終了コード
[<current directory>]
<current directory> パラメータは、起動するアプリケーションのカレントディレクトリを指定することができます。(バージョン 4.78以降)

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<command line>文字列コマンドラインを指定します。
<show>文字列アプリケーションのウィンドウ状態を指定します。
<wait>整数起動アプリケーションの終了を待機するか指定します。
<current directory>文字列カレントディレクトリを指定します。

対象バージョン

一部機能は、全てのバージョンで利用可能です。
バージョン 4.63 より強化された機能があります。
バージョン 4.78 より強化された機能があります。
バージョン 4.103 より変更された機能があります。

戻り値

戻り値として以下の変数が定義されます。

バージョン 4.63 ~ 4.102
変数名意味
result整数アプリケーションの終了コード
<wait> が省略されたか、1 以外を指定した場合は result の値は変更されません。

バージョン 4.103 以降
変数名意味
result-1アプリケーションの起動に失敗
0<wait> に 1 以外を指定したか省略した場合
アプリケーションの起動に成功
整数<wait> に 1 を指定した場合
アプリケーションの終了コード

関連コマンド

関連コマンドはありません。

*1 : 正確には省略したか 1 以外の値の場合

使用方法

使用例

・「メモ帳」を起動する場合
; 「メモ帳」を起動
exec 'notepad readme.txt'
・「メモ帳」を最大化表示で起動する場合
; 「メモ帳」を最大化表示で起動
exec 'notepad readme.txt' 'maximize'
・「メモ帳」をカレントディレクトリ指定で起動する場合
; 「メモ帳」をカレントディレクトリ指定で起動
exec 'notepad readme.txt' 'show' 0 'c:\usr'
・バッチファイルを起動する場合 (strconcat 版)
; バッチファイルを起動する
tmp='cmd /c c:\upload.bat '
strconcat tmp username1 
strconcat tmp ' '
strconcat tmp userpass1 
strconcat tmp ' '
strconcat tmp address
messagebox tmp 'exec'
exec tmp
・バッチファイルを起動する場合 (sprintf2 版)
; バッチファイルを起動する
sprintf2 tmp 'cmd /c c:\upload.bat %s %s %s' username1 userpass1 address
messagebox tmp 'exec'
exec tmp
・ディレクトリを作る場合
; ディレクトリを作る
getenv "USERPROFILE" userprof
getdate logdir "log-%Y%m%d"
sprintf2 cmd 'cmd /c mkdir "%s\My Documents\%s"' userprof logdir
exec cmd "HIDE"
・sysnative エイリアスを用いてネイティブのシステムディレクトリのアプリケーションを起動する場合
失敗する例 (64bit Windows で 32bit プロセスを起動しようとしている場合)
exec 'mstsc /v 192.0.2.0 /w 1024 /h 768 /admin' 'show' 1
成功する例
exec 'C:\windows\sysnative\mstsc /v 192.0.2.0 /w 1024 /h 768 /admin' 'show' 1

サンプル

以下のサンプルが存在します。

備考

特にありません。