将 FOR 变量分配给参数/参数

将 FOR 变量分配给参数/参数

是否不能使用 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 );=

  • 输出:

在此处输入图片描述

相关内容