« IEで開いているページのリンクを iframe src= に変えて書き出す。 | トップページ | スクリプトで、テキストファイルの先頭行を削除する。 »

2007年10月31日 (水)

バッチファイルで、テキストファイルの先頭行を削除する。

バッチファイルで、「作業ファイルを使わず」に、テキストファイルを編集するのは、コツが要ります。

例えば、テキストファイルの先頭行を削除する。

more +1 %1 | sort /+10000 | sort /+10000 /o %1

あるいは、

@echo off
setlocal disabledelayedexpansion
set LINE=
for /f "skip=1 delims=" %%0 in ('find /n /v "" ^<%1') do (
if not defined LINE call >%1
set LINE=%%0
setlocal enabledelayedexpansion
>>%1 echo;!LINE:*]=!
endlocal
)

前者は、sort が入力をすべて読み込んでから、/oのファイルに出力することを利用します。
また、/+で実際の行より大きい桁を指定すると、入力の逆順に出力されます。それを2回繰り返すと入力順に戻ります。

後者は、for /f in ('コマンド') do の 'コマンド' が先に実行されて、結果がどこかに蓄えられて、後から do が処理されることを利用します。

« IEで開いているページのリンクを iframe src= に変えて書き出す。 | トップページ | スクリプトで、テキストファイルの先頭行を削除する。 »