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]" )