如何将命令行参数传递给批处理文件?
时间:2020-03-05 18:42:56 来源:igfitidea点击:
我需要在运行时将ID和密码传递给cmd(或者bat)文件,而不是将其硬编码到文件中。
命令行如下所示:
test.cmd admin P@55w0rd > test-log.txt
解决方案
回答
是的,只是不要忘记在使用if
和for
以及帮派时使用%% 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个参数。