我看过像这样向批处理文件传递参数的内容:
filename.bat argument1 argument2 ..
但我想要传递类似于 filename.bat username=argument1 password=argument2 的内容。
因为我不想依赖任何顺序,用户可以先传递密码,然后再传递用户名。
我看过像这样向批处理文件传递参数的内容:
filename.bat argument1 argument2 ..
但我想要传递类似于 filename.bat username=argument1 password=argument2 的内容。
因为我不想依赖任何顺序,用户可以先传递密码,然后再传递用户名。
/username argument1
的,但相对容易适应username=argument1
,但是当在“a”参数中传递=
时会有问题 - 它被视为分隔符,因此接收例程将看到两个参数,但它们将成对出现(用户名和参数1)。"quoted"
来解决=是分隔符
的问题,然后使用 for /f "tokens=1,*delims==" %%a in ("%~1") do set "%%a=%%b"
但是记得使用引号可能会成为一个绊脚石。
注意:使用我指出的过程不受参数数量限制。
你可以使用变量子字符串来实现这个目标,因为用户名(username=)和密码(password=)都是9个字符长。
例如:
set temp=%0
set temp=%temp:~0,9%
if %temp%=="username=" (
set tmpUser=%0
set username=%tmpUser:~9%
set tmpPass=%1
set password=%tmpPass:~9%
)
if %temp%=="password=" (
set tmpPass=%0
set password=%tmpPass:~9%
set tmpUser=%1
set username=%tmpUser:~9%
)
%1
。 - jeb我认为你无法以随机顺序传递参数,因为它们不是由参数名称而是由%0 - %9标识。
请参见http://www.robvanderwoude.com/parameters.php。
正如在此提到的那样,在调用批处理文件时,您最多可以使用9个参数。