Skip to content

Instantly share code, notes, and snippets.

@tatesuke
Last active December 23, 2015 04:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tatesuke/ee400a817f70a40d3f4e to your computer and use it in GitHub Desktop.
Save tatesuke/ee400a817f70a40d3f4e to your computer and use it in GitHub Desktop.
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