在批处理文件中传递参数

时间:2014-12-30 09:44:05

标签: batch-file command-line-arguments

已经看到将参数传递给批处理文件,如

filename.bat argument1 argument2 ..

但我想传递类似的东西 filename.bat username = argument1 password = argument2

由于我不想依赖任何订单,用户可以先输入密码然后再输入用户名。

3 个答案:

答案 0 :(得分:1)

请看这里:processing switches

虽然这是面向使用/username argument1格式,但相对容易适应username=argument1 ,但在“a”中传递=时出现问题“参数 - 它被视为分隔符,因此接收例程会看到两个参数,但它们将配对(用户名参数1。)

确实完全取决于您希望如何处理数据。如果您愿意,可以通过参数"quoted"来解决= is a separator问题,然后使用

 for /f "tokens=1,*delims==" %%a in ("%~1") do set "%%a=%%b"

但是记住使用引用可能是一个绊脚石。

注意:使用我指出的程序不受参数计数的限制。

答案 1 :(得分:0)

我不认为您能够以随机顺序传递参数,因为它们不是由参数名称标识的,而是由%0 - %9

标识

请参阅http://www.robvanderwoude.com/parameters.php

如前所述,调用批处理文件时可以使用tp 9参数。

答案 2 :(得分:0)

您可以使用variable substring来实现此目的,因为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%
)