Windowsバッチでターミナルスクリプトを実行する方法を教えてください

Caché のターミナルスクリプトを使用することで、コマンドラインからの入力作業なしで Caché のユーティリティを実行することが可能になります。


また、Caché のルーチンやクラスを、Windows のバッチファイルで実行する場合(ccontrolコマンドで実行)は、「認証なし」もしくは「オペレーティングシステム認証」を指定していただく必要がありますが、パスワード認証のみしか使用できないような場合に、ターミナルスクリプトを使用する方法が使えます。

ターミナルスクリプトを使用する場合、Telnetサービス(%Service_Telnet)を有効にしていただく必要があります。

簡単に手順を説明すると、以下のようになります。

--------------------------------------------------------------------------------------------
cterm.exeを使用します。
これはプロンプトが返ってきてユーザが入力を必要とするもの(例えば^%GSIZEなど)にも有効です。
詳細は以下をご覧ください。import.scrの中身を変更することであらゆるCachéのユーティリティの実行に使用できます。

1. トピック下部にあるサンプル import.scr を、適当なディレクトリに配置して下さい。
(ここではC:\import.scr とします)

2. 以下のように実行します。

 

cd C:\intersystems\cache\bin
cterm.exe /console=cn_iptcp:localhost[23] C:\import.scr


※ [23]:Telnetポートを指定してください
--------------------------------------------------------------------------------------------

以下ドキュメントをご参照ください。
ターミナルスクリプトの使用法について


★import.scr(ターミナルスクリプトのサンプル)

#ログインUsername/Password入力
wait:Username:
send:_System
wait:Password:
send:SYS
wait:%SYS
send: zn "USER"

#クラスインポート&コンパイル実行
send:d ##class(%SYSTEM.OBJ).Load("c:\temp\test.xml","ck")
send:
send:H


尚、Telnetサービスを使用してターミナルスクリプトを実行する場合、スクリプト内で日本語を直接使用することはできません。

これは、ターミナルでスクリプトを読み込む際に文字コードは無変換で読み込む仕様となっているためです。
日本語をUnicodeに変換する形でコードを記述することで、日本語を使用することが可能になります。
例:.scrファイルを SJISで作成した場合(ファイル保存文字コード=SJISの時)

wait for: USER>
send:s ^x=$ZCVT("あいうえお","I","SJIS")


または、日本語を直接記述せずに、$char()を使用して文字コードで指定する方法でも可能です。

USER>w $a("あ")_","_$a("い")_","_$a("う")_","_$a("え")_","_$a("お")
12354,12356,12358,12360,12362
---
wait for: USER>
send:s ^x=$c(12354,12356,12358,12360,12362)

 


該当する製品: Caché, Ensemble, HealthShare/Caché Based
関連トピック: ccontrol/iris コマンドでユーザ名を指定して実行することはできますか?
関連トピック:Linux のシェルスクリプトで Caché/Ensembmle のルーチンやメソッドの戻り値を取得する方法を教えてください
関連トピック:【IRIS】 Linux のシェルスクリプトでルーチンやメソッドの戻り値を取得する方法を教えてください
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る