我想在Windows上分发用Java编写的命令行应用程序.
我的应用程序作为zip文件分发,它有一个lib目录条目,其中包含调用我的主类所需的.jar文件.目前,对于Unix环境,我有一个shell脚本,它通过附加lib目录中的所有文件来调用带有CLASSPATH的java命令.
我怎么写具有类似功能的.BAT文件?什么是Windows世界中的find Unix命令的等价物?
您想在批处理脚本中使用for循环
@echo off setLocal EnableDelayedExpansion set CLASSPATH=" for /R ./lib %%a in (*.jar) do ( set CLASSPATH=!CLASSPATH!;%%a ) set CLASSPATH=!CLASSPATH!" echo !CLASSPATH!
当我在寻找一个批处理脚本来遍历目录中的所有文件时,这真的帮助了我,它是关于删除文件但它非常有用.
用于删除空目录的单行批处理脚本
说实话,使用Jon的答案,如果所有文件都在一个目录中,那么这可能会更好,但这可能会帮助你在另一个时间.
你为什么要用find?想必你提前知道你的jar文件需要的所有库,为什么不列出它们呢?
或者,您可以随时使用-Djava.ext.dirs=lib
并让它以这种方式获取所有内容.
从6.0开始,Java支持通配符类路径.
Java命令行类路径语法
如果您希望CLASSPATH设置保留在脚本之外并且未使用/ V启动shell,则可以执行以下操作:
@echo off FOR /R ./lib %%a in (*.jar) DO CALL :AddToPath %%a ECHO %CLASSPATH% GOTO :EOF :AddToPath SET CLASSPATH=%1;%CLASSPATH% GOTO :EOF
当您在命令行上玩游戏时,可用于设置环境.