質問: バッチファイルとTera Term マクロを同じフォルダに設置し、バッチファイルをダブルクリックして起動しても、すぐに画面が消えてしまいます。 また、バッチファイルの起動方法をコマンドプロンプトから起動すると、以下のようなエラーが表示されていまいます。 なお、Tera Term マクロを直接ダブルクリックすれば、マクロは正常に動作しております。 バッチファイルの何が間違っているのか分からない状態なので、解決策を教えていただければと思います。 バッチファイル ``` @echo off sample.ttl PAUSE ``` コマンドプロンプトから起動時のエラー ``` C:\work\Script\bat>・・@ '@' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ```
回答: 問題点1 過去からの互換性を維持する目的で、現在においても「バッチファイル」は `cmd.exe` 上で動かし、なおかつ(デフォルトでは)各国語の伝統的エンコーディングを使う仕様です。つまり日本語ではバッチファイルとして使うべきエンコーディングはいわゆる `Shift-JIS` もちょっと厳密には `CP932` なり `MS932` となります。(現代的 `UTF-8` が使えないわけではないが詳細略) `CP932` エンコードで動作している `cmd.exe` に `BOM` つき `UTF-8` エンコードしたバッチファイルを与えると `BOM` である `EF BB BF` も `CP932` な文字と解釈するので `cmd.exe` から見て文字化けとなり `'・ソ@echo' は、内部コマンドまたは` 以下略のエラーが表示されることになります。 あなたのところの表示とオイラのところの表示が若干違うのが微妙に気になるところですが深く追求しません。 なので回答1として「バッチファイルは `Shift-JIS` または `CP932` で保存しましょう」メモ帳なら名前を付けて保存画面の下のほう「文字コード」で `ANSI` ですね。他のエディタならそれぞれの手順を探してみてください。 問題点2 `cmd.exe` は拡張子 `.ttl` について知りませんので、これを直接バッチファイル内で起動しようとしても失敗します。 `cmd.exe` で起動できるのは拡張子 `.EXE` など環境変数 `PATHEXT=` で指定されているもののみです。なので直接起動すべきは Tera Term 本体 EXE つまりは `ttermpro.exe` ということになります。起動時にマクロを指定したいのなら Tera Term Pro コマンドライン の解説に従って `/M=` を指定することになります。マクロファイルが Tera Term 本体 EXE と同じディレクトリにあるときはパスを略すことができるので、回答2バッチファイルを Tera Term インストールディレクトリに配置できるなら(この行為はセキュリティ的に禁止なのですが) ``` @echo off ttermpro /m=sample.ttl pause ``` とすればもしかしたらあなたの期待通りかもしれません。バッチファイルやマクロファイルをほかの場所に保存するなら2行目は `C:\Program Files (x86)\teraterm\ttermpro` なり、あなたのインストール先ディレクトリに合うようにフルパス記述してみてください。