我需要在运行批处理文件时传递一个ID和密码,而不是将它们硬编码到文件中。

下面是命令行的样子:

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

当前回答

另一个有用的技巧是使用%*表示“所有”。例如:

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 admin password foo bar

我的语法可能有点错误,但这是大意。

其他回答

是的,在使用if和for和the gang时,不要忘记使用%%1这样的变量。

如果您忘记使用double %,那么您将替换(可能为空)命令行参数,并且您将收到一些非常令人困惑的错误消息。

另一个有用的技巧是使用%*表示“所有”。例如:

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 admin password foo bar

我的语法可能有点错误,但这是大意。

要在命令行中引用一个set变量,你需要使用%a%,例如:

set a=100 
echo %a%  
rem output = 100 

注意:这适用于Windows 7 pro。

@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
SHIFT
GOTO Loop
:Continue

注意:如果“%1”==“”将导致问题,如果%1本身被括在引号中。

在这种情况下,使用IF[%1]==[],或者仅在NT 4 (SP6)及以后版本中使用IF "%~1"==""。

创建一个新的批处理文件(例如:openclass.bat),并在文件中写入这一行:

java %~n1

然后将批处理文件放在system32文件夹中,找到你的Java类文件,右键单击,Properties, Open with…,然后找到你的批处理文件,选择它,这就是…

这对我很管用。

PS:当我关闭Java类时,我找不到关闭cmd窗口的方法。现在……