我正在尝试提供执行另一个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/)
一样使用
答案 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%