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

Batch file 如何读取bat文件中特定参数的位置,batch-file,Batch File,我试图提供一个包装器来执行另一个bat文件。我需要从命令行读取参数,并需要检查该参数的位置 例如:Test.bat-i路径/myinput-t路径/myoutput 在脚本中,我正在检查是否指定了“-i”和“-t”选项 如果指定了, 它将在/path/myinput/Out/path/myoutput/ 其他的 它将调用另一个bat文件Main.bat In/Out/ 如果我使用[%2]硬编码读取输入路径的位置,则我的脚本正常工作。但我不想限制用户遵循相同的模式。他们可以先使用-t选项,然后再使

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

例如:
Test.bat-i路径/myinput-t路径/myoutput

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

如果指定了, 它将在/path/myinput/Out/path/myoutput/ 其他的 它将调用另一个bat文件
Main.bat In/Out/

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

比如
如果[%*]=[-i](设置inputpath=In/[%(getpos()+1)]/)或者(设置inputpath=In/)
。这样我就可以像
Main.bat%inputpath%%Outputpath%
一样使用它了吗

@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“再也看不到了”

输出:作为参数3找到

myBat.bat“也适用于空格”-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%

为什么不检查%1和%3的值呢?不相关-
/
在winbatch中引入了选项,``是路径分隔符,但如何从该位置读取。我这样试过
设置bs=%(%position%)
。基本上,它应该像
set bs=%2
那样执行。这是第二个参数。这不起作用,我使用了
设置bs=%%%position%
。如果我回显%bs%,则为%2。当我执行
设置bs=%2
时。它正在打印正确的命令行参数执行
callecho%bs%
callset%%%position%
调用
很重要,因为它执行以下操作。使用该调用,将以下内容传递给echo/set:
echo%1
,因为所有内容都会得到评估
%%
变成
%%
%position%%
来设置值。这里我的意图是将“bs”设置为命令行参数。这就是原因,我得到的位置“-i”被发现。然后我在选项“i”后做+1。然后我试着在那个arg上设置bs。例如<代码>Test.bat-i mybuild。我需要设置bs=mybuild。@Cool\u Binami我在最后添加了完整的工作代码。使用“
myBat abc-i arg
”测试从
echo
返回的arg。