是否不能使用 FOR 变量(如 %%a)并将其分配给参数/参数,如下所示:
for /L %%a in (0,1,5) do (
echo Argument#(%%a) is %~%%a
)
答案1
@echo off && setlocal EnableDelayedExpansion
set "_cnt=0"
for %%Z in (%*);= do set "_arg=%%~Z" && set /a "_cnt+=1" & =;(
<con: call set "_arg[!_cnt!]=!_arg!" && for /l %%L in =;(
!_cnt! 1 !_cnt!);= do echo/ Argument #%%L is: !_arg[%%L]!
);=
endlocal
- 一个更简单的版本是不为每个参数定义一个变量,而只是按顺序一次使用一个参数:
@echo off
set "_cnt=0"
for %%Z in (%*)do call set /a "_cnt+=1" && call %:^) %%_cnt%% "%%~Z"
goto :eOf
%:^)
echo/ Argument #%~1 is: %~2 & exit /b
注意:产生与上面的代码相同的输出/结果。
- 或者类似这样的:
@echo off
for /l %%L in (1,1,9)do echo "%*" | find "%%%L" >nul && =;(
call echo/ Argument #%%~L (^%%%%~%%~L^) is: %%~%%~L );=
- 输出: