Win32: Fix rm.bat

- `if exist` and `del` ignore directories matching the wildcard,
  remove both separately.

- `rd /s` ignores wildcards, while `del` removes ordinary files by the
  wildcard, iterate over matching directories by `for /D`.
This commit is contained in:
Nobuyoshi Nakada 2024-12-31 14:53:07 +09:00
parent 5fec930832
commit 3cd809deb5
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465

View File

@ -4,12 +4,15 @@ set recursive=
:optloop
if "%1" == "-f" shift
if "%1" == "-r" (shift & set "recursive=1" & goto :optloop)
if "%1" == "--debug" (shift & set PROMPT=$E[34m+$E[m$S & echo on & goto :optloop)
:begin
if "%1" == "" goto :end
set p=%1
if exist "%p:/=\%" for %%I in ("%p:/=\%") do (
del /q "%%I" || if "%recursive%" == "1" rd /s /q "%%I"
) 2> nul
set p=%p:/=\%
if exist "%p%" del /q "%p%" > nul
if "%recursive%" == "1" for /D %%I in (%p%) do (
rd /s /q %%I
)
shift
goto :begin
:end