如何将命令行参数传递给批处理文件?

时间:2020-03-05 18:42:56  来源:igfitidea点击:

我需要在运行时将ID和密码传递给cmd(或者bat)文件,而不是将其硬编码到文件中。

命令行如下所示:

test.cmd admin P@55w0rd > test-log.txt

解决方案

回答

是的,只是不要忘记在使用iffor以及帮派时使用%% 1这样的变量。

如果我们忘记了双,那么我们将替换(可能为null)命令行参数,并且会收到一些令人困惑的错误消息。

回答

另一个有用的技巧是使用"%*"来表示"全部"。例如:

echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*

运行时:

test-command admin password foo bar

上面的批处理文件将运行:

fake-command /u admin /p password foo bar

我的语法可能有些错误,但这是一般的想法。

回答

如果要智能处理丢失的参数,可以执行以下操作:

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1

回答

这是我的方法。

@fake-command /u %1 /p %2

命令行如下所示:

test.cmd admin P@55w0rd > test-log.txt

%1适用于第一个参数,%2(这是棘手的部分)适用于第二个参数。通过这种方式,我们最多可以传递9个参数。