headコマンドも放ったらかしだが、lsコマンドを作ってみたい。
現在は、DOSKEYマクロで、
ls=dir $*|findstr/r "^[0-9][0-9][0-9][0-9]"
と定義しているが、見ればわかる通りこれは ls -l 相当である。
あと、オプション無し(マルチカラムでファイル名のみ)と、-t -r オプションも欲しい。
まずは、オプション無しの場合。dir /w の出力のヘッダとフッタを消したものを出力したい。findstr と正規表現を使って、
dir /w | findstr/r "^[^ ]"
でいけるはずだが、何故か [ ] を含んだ行にしかマッチしない。
しょうがないのでスクリプトを書く。
setlocal enabledelayedexpansion for /f "delims=" %%X in ('DIR /W %*') do ( set W=%%X if "!W:~0,1!" NEQ " " echo %%X )
/W オプションは、ls の -x オプション相当である。ls のマルチカラム表示には -C オプションもあり、これは dir の /D オプションが相当するが、 /W の方が好みなのでそうしてある。
他のオプションは次回。