主批处理启动子批处理运行Java程序时,如何传递参数?
没问题,这其实很简单!你只需要在主批处理的start命令后直接追加要传递的参数,再在子批处理里用批处理的参数变量接收,最后把这些参数传给Java程序就搞定了。我给你一步步演示:
1. 修改主批处理文件
在每个start命令的子批处理文件名后面,直接加上你要传递的参数(多个参数用空格分隔)。比如假设你要给服务器传模式参数,给每个工位传ID和端口,修改后的主批处理如下:
@ECHO OFF set CLASSPATH=. ECHO open Server start Server.bat -mode server ECHO open station1 start station1.bat -stationId 1 -port 8081 ECHO open station2 start station2.bat -stationId 2 -port 8082 ECHO open station3 start station3.bat -stationId 3 -port 8083 ECHO open station4 start station4.bat -stationId 4 -port 8084
如果参数里包含空格(比如工位名称是“组装工位1”),记得用双引号把整个参数包起来,比如:
start station1.bat "-stationName 组装工位1" -port 8081
2. 修改子批处理文件
子批处理里用%1、%2、%3这类变量来接收主批处理传递的参数(%1对应第一个参数,%2对应第二个,以此类推),然后把这些变量直接放到Java命令里即可。
比如Server.bat的内容可以写成:
@ECHO OFF :: 把主批处理传的参数直接传给Java程序 java -cp %CLASSPATH% com.yourcompany.ServerMain %1 %2
再比如station1.bat的内容:
@ECHO OFF java -cp %CLASSPATH% com.yourcompany.StationMain %1 %2 %3 %4
小提示
- 如果不确定参数是否正确传递,可以在子批处理里加一行
ECHO 收到的参数:%1 %2 %3来调试,这样能看到实际接收到的内容。 - 要是参数数量较多,也可以用
%*代表所有传递过来的参数,直接把%*放到Java命令里,这样不管传多少参数都能一次性接收,比如:java -cp %CLASSPATH% com.yourcompany.StationMain %*
内容的提问来源于stack exchange,提问作者Hongwei Li
相关产品推荐
相关产品推荐

