前回の記事のbatとほぼ同じ
全角スペース以外にも、イコール・カンマ・セミコロンでも同じことが起こるようなので対応
呼び出し
@echo off
call %~dp0file_loader.bat %*
for %%i in (%__ARGS%) do echo %%~dpnxtzi
pause
@echo off
call %~dp0file_loader.bat %*
call :READ_ARGS %__ARGS%
goto :END
:READ_ARGS
echo %1
for %%i in (%*) do echo %%~dpnxtzi
exit /b
:END
pause
外部bat
file_loader.bat
@echo off
setlocal
for %%i in (%*) do if not exist %%i goto :__ARRANGE_MODE
set __ARGS=%*
goto :__END
:__ARRANGE_MODE
set __PRE=%*
set __PRE=%__PRE: =:1%
set __PRE=%__PRE:,=:2%
set __PRE=%__PRE:;=:3%
for %%i in (%__PRE%) do call :__MERGE_ALL %%i
set __ARGS=%__ARGS:~1%
set __ARGS=%__ARGS::1= %
set __ARGS=%__ARGS::2=,%
set __ARGS=%__ARGS::3=;%
set __ARGS="%__ARGS:?=" "%"
goto :__END
:__MERGE_ALL
set __V=%~1
if "%__V::\=%" == "%__V%" (
set __ARGS=%__ARGS%=%__V%
) else (
set __ARGS=%__ARGS%?%__V%
)
exit /b
:__END
endlocal & set __ARGS=%__ARGS%
exit /b