连接变量的路径列表 - 传递给 CMD 批处理脚本中的 "java -classpath ..."
Concatenate a list of paths to a variable - to pass to "java -classpath ..." in CMD batch script
我正在尝试将 a simple shell script 启动 Java 程序移植到 Windows 的 CMD 批处理脚本:
@echo on
set REPO="C:\Users\user1\.m2\repository"
set VERSION=9.3.9.v20160517
"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -classpath C:\Users\user1\slova\WebSockets\target\classes;%REPO%\javax\servlet\javax.servlet-api.1.0\javax.servlet-api-3.1.0.jar;%REPO%\org\eclipse\jetty\websocket\websocket-server\%VERSION%\websocket-server-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-common\%VERSION%\websocket-common-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-io\%VERSION%\jetty-io-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-client\%VERSION%\websocket-client-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-servlet\%VERSION%\jetty-servlet-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-security\%VERSION%\jetty-security-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-server\%VERSION%\jetty-server-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-http\%VERSION%\jetty-http-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-servlet\%VERSION%\websocket-servlet-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-api\%VERSION%\websocket-api-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-util-ajax\%VERSION%\jetty-util-ajax-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-util\%VERSION%\jetty-util-%VERSION%.jar;%REPO%\org\postgresql\postgresql.4.1208.jre7\postgresql-9.4.1208.jre7.jar de.afarber.websockets.MyHandler
如您所见(如果将上面的代码向右滚动)在 java -classpath
字符串之后有一个更长的文件路径列表。
是否可以在单独的行中列出每个路径 - 然后通过 CMD shell 将该列表连接到一个变量(在其间添加分号 ;
)?
这样我可以更好地维护我的批处理文件(更容易在编辑器中编辑)并且最终只需调用 java -classpath %CPATHS% de.afarber.websockets.MyHandler
更新:
如果所有 JAR 文件都位于同一个目录中,我可以使用 the new Java 8 wildcard syntax java -classpath "\that\dir\*" de.afarber.websockets.MyHandler
- 但这里不是这种情况。
您可以使用这种形式的变量:
set MYCLASSPATH=C:\Users\user1\slova\WebSockets\target\classes
set MYCLASSPATH=%MYCLASSPATH%;%REPO%\javax\servlet\javax.servlet-api.1.0\javax.servlet-api-3.1.0.jar
...
"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -classpath %MYCLASSPATH% ...
我正在尝试将 a simple shell script 启动 Java 程序移植到 Windows 的 CMD 批处理脚本:
@echo on
set REPO="C:\Users\user1\.m2\repository"
set VERSION=9.3.9.v20160517
"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -classpath C:\Users\user1\slova\WebSockets\target\classes;%REPO%\javax\servlet\javax.servlet-api.1.0\javax.servlet-api-3.1.0.jar;%REPO%\org\eclipse\jetty\websocket\websocket-server\%VERSION%\websocket-server-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-common\%VERSION%\websocket-common-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-io\%VERSION%\jetty-io-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-client\%VERSION%\websocket-client-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-servlet\%VERSION%\jetty-servlet-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-security\%VERSION%\jetty-security-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-server\%VERSION%\jetty-server-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-http\%VERSION%\jetty-http-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-servlet\%VERSION%\websocket-servlet-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-api\%VERSION%\websocket-api-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-util-ajax\%VERSION%\jetty-util-ajax-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-util\%VERSION%\jetty-util-%VERSION%.jar;%REPO%\org\postgresql\postgresql.4.1208.jre7\postgresql-9.4.1208.jre7.jar de.afarber.websockets.MyHandler
如您所见(如果将上面的代码向右滚动)在 java -classpath
字符串之后有一个更长的文件路径列表。
是否可以在单独的行中列出每个路径 - 然后通过 CMD shell 将该列表连接到一个变量(在其间添加分号 ;
)?
这样我可以更好地维护我的批处理文件(更容易在编辑器中编辑)并且最终只需调用 java -classpath %CPATHS% de.afarber.websockets.MyHandler
更新:
如果所有 JAR 文件都位于同一个目录中,我可以使用 the new Java 8 wildcard syntax java -classpath "\that\dir\*" de.afarber.websockets.MyHandler
- 但这里不是这种情况。
您可以使用这种形式的变量:
set MYCLASSPATH=C:\Users\user1\slova\WebSockets\target\classes
set MYCLASSPATH=%MYCLASSPATH%;%REPO%\javax\servlet\javax.servlet-api.1.0\javax.servlet-api-3.1.0.jar
...
"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -classpath %MYCLASSPATH% ...