ファイル名に&を使うときは、半角空白も併せて使うべし。(その2)
複数ファイルのドロップにも対応するには、CMDCMDLINEをパーズします。
@echo off
setlocal enabledelayedexpansion
set cmdline=!cmdcmdline:*" =!
set cmdline=!cmdcmdline:~0,-1!
set fq=
set fg=
set fb=true
set cmdline2=
set n=0
if not defined cmdline goto :next
:for
set c=!cmdline:~%n%,1!
if not defined c goto :next
if defined fq (
if !c!==^" set fq=& if defined fg set cmdline2=!cmdline2!^"
) else (
if !c!==^ if not defined fb (
set fb=true
if defined fg (
set fg=
set cmdline2=!cmdline2!^"
)
)
if not !c!==^ if defined fb (
set fb=
if not !c!==^" (
set fg=true
set cmdline2=!cmdline2!^"
)
)
if !c!==^" set fq=true& if defined fg set cmdline2=!cmdline2!^"
)
set cmdline2=!cmdline2!!c!
set /a n+=1
goto :for
:next
if defined fq set cmdline2=!cmdline2!^"& if defined fg set cmdline2=!cmdline2!^"
if defined fg set cmdline2=!cmdline2!^"
call :main !cmdline2!
exit
:main
rem 元のバッチファイルをここに置く
echo;%*
pause
« ファイル名に&を使うときは、半角空白も併せて使うべし。 | トップページ | ファイル名に%を使うと、バッチファイルにドロップしたとき、環境変数に展開される。 »