コマンドプロンプトでシェルの様なパラメータ展開が欲しかったので作ってみた。
[ブラケット]でくくったらワイルドカードを展開してくれる。
めっちゃ便利だ♪
Z:\home >ex echo [*.pdf]
ex: echo "11.pdf" "22.pdf"
"11.pdf" "22.pdf"
ex.bat
@echo off
setlocal
SET LISTCMD=
:ARG_START
IF "%1"=="" GOTO :ARG_LAST
set arg=%1
IF NOT "%arg:~0,1%"=="[" GOTO :PARA_NORMAL
IF NOT "%arg:~-1%"=="]" GOTO :PARA_NORMAL
:PARA_WILD
for %%i in ("%arg:~1,-1%") do Call :List_Loop_Start "%%i"
GOTO :List_Loop_end
:List_Loop_Start
SET LISTCMD=%LISTCMD% "%1"
GOTO :EOF
:List_Loop_end
GOTO :PARA_END
:PARA_NORMAL
CALL :SPACE_EXISTS_PARA arg "%arg%"
SET LISTCMD=%LISTCMD% %arg%
GOTO :PARA_END
:PARA_END
shift 1
GOTO :ARG_START
:ARG_LAST
@echo ex:%LISTCMD%
%LISTCMD%
@echo off
GOTO :EOF
:SPACE_EXISTS_PARA
set "arg=%2"
IF "%arg: =%"=="%arg%" GOTO :SPACE_IF_NORMAL
SET %1="%arg%"
GOTO :SPACE_IF_END
:SPACE_IF_NORMAL
SET %1=%arg%
GOTO :SPACE_IF_END
:SPACE_IF_END
GOTO :EOF
[0回]
PR