lsコマンドの作成(1)

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 の方が好みなのでそうしてある。
他のオプションは次回。