nopっていうメモ帳ラッパー作った

よく JScript とかで、

C:\>copy con|CScript //E:JScript
alert( "テストコードを色々..." );
...
^Z

とかやってテストしたくなるけど、CScriptは標準入力をソースとして受け付けてくれないのと、コード書き間違えちゃったりした時に編集できなくてめんどいのと、書いたコードが失われちゃうのが嫌だなあと思ってた。で、ついに重い腰をあげて、2つの問題を解決するラッパー書いた。

C:\>nop|CScript //E:JScript

とかやると、メモ帳で編集した結果を標準出力にはいてくれる。ファイルは $APPDATA/nop 以下に保存されるので、あとから探すこともできる。

以下FAQ

Q. CScriptは標準入力をソースとして見てくれないのですが?

A. nop なので役に立ちません。

... てかkazuhoさんのブログパクリたいだけ (ry

(参考文献: http://d.hatena.ne.jp/kazuhooku/20091028/1256699829 )


nop.bat

@echo off
setlocal
: create dir
set datadir=%NOP_HOME%
if not %datadir%.==. goto L1
set datadir=%APPDATA%
if %datadir%.==. set datadir=%HOMEPATH%
if %datadir%.==. set datadir=%TMP%
if %datadir%.==. set datadir=%TEMP%
set datadir=%datadir%\nop
:L1
if not exist %datadir%\nul mkdir %datadir%
: build filename
set t=%DATE%-%TIME%
set t5=%t:~0,4%
set t4=%t:~5,2%
set t3=%t:~8,2%
set t2=%t:~11,2%
set t1=%t:~14,2%
set t0=%t:~17,2%
set i=0
:L2
set fn=%datadir%\%t5%%t4%%t3%-%t2%%t1%%t0%-%i%
if not exist %fn% goto L3
set /a i=%i%+1
goto L2
:L3
: run vi
copy nul "%fn%">nul
start /wait notepad.exe "%fn%"
if not %errorlevel%.==0. (
    echo "vi exited with non-zero return code:" %ERRORLEVEL%
    goto :EOF
)
if exist %fn% (
    type %fn%
    echo\
)