Create a gist now

Instantly share code, notes, and snippets.

Something like Shebang for Windows ウィンドウズ向けの「シバン」のようなもの。一時ファイルを使います。「.bat」で保存する。
@SET /P X=/*<NUL > "_TEMP_" & TYPE "%~f0" >> "_TEMP_" & jrunscript -l js -f "_TEMP_" %* & DEL "_TEMP_" & EXIT /B & rem */
// これ以降の行はスクリプトがかける
print("hoge");
//【何をやっているのか】---------------------------------------------------------------------------
// 自分自身を丸々コピーした一時ファイルを作成してインタプリタに渡すだけ。
// ただし、コピーの際に「シバン行」をコメントアウトしてやることでシバン行は無視されます。
//
// ●@SET /P X=/*<NUL > "_TEMP_"
// jsのコメント開始を示す「/*」を「__TEMP__」というファイルに出力します。
// echoコマンドでもいいのですが改行が出力されて行が1行ずれちゃうんですよね。
// 追記:というか、「//」でもいいか。
//
// ●TYPE "%~f0" >> "_TEMP_"
// 「__TEMP__」というファイルに自分自身を丸っと追記します。
//
// ●jrunscript -l js -f "_TEMP_" %*
// 「__TEMP__」というファイルを指定してインタプリタを起動します。
//
// ●DEL "_TEMP_"
// スクリプトの実行後、一時ファイルを削除します。
//
// ●EXIT /B
// コマンドプロンプトでこれ以降の行の実行をしないようにします。
//
// ● rem */
// これが味噌。ここにjsのコメント終了を示す「*/」記述しておくことによって
// インタプリタが一時ファイルを読み込むときにこの行だけ無視してくれるのです。
//
// 【その他】
// コメントアウトの方法とコマンドさえ変えてしまえば一応どんな言語にも使える気がします。
// 一時ファイルを使ってしまうのであまりキレイじゃないですし、同時実行とかファイル分割とか不可能ですけど。
// でも、この方法を使うのって、1ファイルで収まるようなちょっとした用途だと思うのであんまり問題無さそう?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment