lsコマンドの作成(2)

前回の続き。
オプション解析を含む完成版である。対応オプションは少ないが、自分でよく使うのは、ls (linuxでは ls -vxF にaliasしてある)、ls -l 、ls -ltr くらいなので一応満足。shift%* に影響を及ぼさないので、%* を使えないのがいつもながらいまいち。

@echo off
setlocal enabledelayedexpansion
set L=
set T=
set R=
:option
set opt=%1
if "%opt:~0,1%" NEQ "-" goto optend
shift /1
:opt1
set opt=%opt:~1%
if "%opt%" == "" goto option
if /i "%opt:~0,1%" == "L" set L=L&goto opt1
if /i "%opt:~0,1%" == "T" set T=T&goto opt1
if /i "%opt:~0,1%" == "R" set R=R&goto opt1
echo invalid option "-%opt:~0,1%"
echo %0 -l -t -r filespec...
exit /b 1
:optend
if "%T%%R%" == "TR" set opt=/OD
if "%T%%R%" == "T"  set opt=/O-D
if "%T%%R%" == "R"  set opt=/O-N
if "%T%%R%" == ""   set opt=
if "%L%" == "" (
 for /f "delims=" %%X in ('DIR /W %opt% %1 %2 %3 %4 %5 %6 %7 %8 %9') do (
  set W=%%X
  if "!W:~0,1!" NEQ " " echo %%X
 )
) else (
 DIR %opt% %1 %2 %3 %4 %5 %6 %7 %8 %9|findstr/r "^[0-9][0-9]"
)