如何读取bat文件中特定参数的位置

时间:2017-02-01 09:51:10

标签: batch-file

我正在尝试提供执行另一个bat文件的包装器。我需要从命令行读取参数,并需要检查该参数的位置。

例如:@csrf_protect def register(request): # ... return render(request, 'register.html', {'form': form})

在脚本中,我正在检查" -i"和" -t"是否指定了选项

如果指定,     它将调用另一个bat文件Test.bat -i path/myinput -t path/myoutput 其他     它将调用另一个bat文件Main.bat In/path/myinput/ Out/path/myoutput/

如果我使用[%2]硬编码位置来读取输入路径,我的脚本正在工作。但我不想限制用户遵循相同的模式。他们可以先使用选项-t然后使用-i秒。所以我需要阅读" -i"和" -j"

有点像     Main.bat In/ Out/。所以我可以像if [%*]==[-i] ( SET inputpath=In/[%(getpos()+1)]/) else ( SET inputpath=In/)

一样使用

1 个答案:

答案 0 :(得分:0)

这有用吗:

@echo off
set position=0
for %%a in (%*) do (
set /a position+=1
if "%%~a"=="-i" Goto :found
)
echo -i not found!
Goto eof

:found
echo Found as argument %position%

循环遍历所有参数(%*)计算变量并检查找到的参数是否等于您想要的值。如果发现循环被破坏并且参数的位置被写出来。

使用示例:

  

myBat.bat abc def -i "not seen anymore"

     

输出:找到参数3

     

myBat.bat "works with spaces as well" -i

     

输出:找到参数2

要实际获取参数,您可以使用以下语法:

call echo %%%myVar%

完整代码:

@echo off
set position=0
for %%a in (%*) do (
set /a position+=1
if "%%~a"=="-i" Goto :found
)
echo -i not found!
Goto eof

:found
echo Found as argument %position%
set /a position=%position%+1
call set bs=%%%position%
echo %bs%