Batch file 如何读取bat文件中特定参数的位置
我试图提供一个包装器来执行另一个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选项,然后再使
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。