Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用变量访问windows命令文件参数_Windows_Batch File - Fatal编程技术网

使用变量访问windows命令文件参数

使用变量访问windows命令文件参数,windows,batch-file,Windows,Batch File,我试图使用变量访问传递给函数的参数 名称我知道其他方法,比如使用SHIFT命令, 但在这种情况下,我是这样尝试的。我想通过使用 “setlocal enabledelayedexpansion”命令我可以这样做,因为它允许 要使用感叹号(而不是百分号)访问的变量 标志。这是下面脚本中不起作用的行: set parm_value=%!parm_nr! 我想这会导致这样的结果: set parm_value=%1 但相反,它会导致: set parm_value=1 有

我试图使用变量访问传递给函数的参数 名称我知道其他方法,比如使用SHIFT命令, 但在这种情况下,我是这样尝试的。我想通过使用 “setlocal enabledelayedexpansion”命令我可以这样做,因为它允许 要使用感叹号(而不是百分号)访问的变量 标志。这是下面脚本中不起作用的行:

    set parm_value=%!parm_nr!
我想这会导致这样的结果:

    set parm_value=%1
但相反,它会导致:

    set parm_value=1
有人知道这种语法是否可行吗?下面是一个测试 演示该问题的脚本。除了这一项外,其他都是 工作正常。先谢谢你

    :BOJ
        echo off
        setlocal enabledelayedexpansion
        cls
        echo.

        call :EXAMPLE_1 parm_1.1 parm_1.2 parm_1.3

        goto :EOJ

    :EXAMPLE_1
        set nr_parms=0
        for %%x in (%*) do set /A nr_parms+=1

        set parm_nr=1

    :EXAMPLE_1_LOOP
        if %parm_nr% GTR %nr_parms% goto :EXAMPLE_1_END

        set parm_value=%!parm_nr!
        echo Parameter #%parm_nr% : %parm_value%
        set /A parm_nr+=1
        goto :EXAMPLE_1_LOOP

    :EXAMPLE_1_END
        echo.
        exit /B 0

    :EOJ
        pause
试一试

call set parm_value=%%!parm_nr!

我试过了(3个双引号,4个双引号,以及在最后一个感叹号后包含双引号的组合),但结果是文字“%1”在parm_值中,而不是实际的参数值。@user3289835-我不明白您尝试了什么失败了。这个解决方案对我来说非常有效。Npcmaka,我道歉,我误读了你的解决方案,我错过了开头的“电话”。你说得对,这很有效!谢谢,我永远也不会明白这一点。
%
参数扩展发生在
之前变量扩展,因此您的代码可能无法工作。Npcmaka有一个很好的解决方案。