我有一个脚本,使用Catalina.bat检测操作系统,适用于Windows和UNIX。对于UNIX,它可以成功执行,但对于Windows,它无法从Catalina.bat中提取操作系统版本。我发现原因是在Catalina.bat中执行此行时:
问题已解决:你是对的。
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome
在 catalina.bat 文件中未达到 OS 版本声明,因此我猜解决方法是:使用我的 Ant 脚本显式设置 CATALINA_HOME 环境变量;如何做,请提供任何解决方案。
我正在使用这段代码,这里的 OS.version 属性应该从 catalina.bat 文件中缓存 OS 版本,类似的 UNIX 代码可以正常工作,但是在 Windows 上出现问题,我想知道问题出在哪里。
<property name="version" location="${My_proj}\tomcat\bin\catalina.bat"/>
<exec executable="${version}" outputproperty="OS.version">
<arg value="version" />
<redirector>
<outputfilterchain>
<tokenfilter>
<containsstring contains="OS Name:"/>
<replacestring from="OS Name: " to=""/>
</tokenfilter>
</outputfilterchain>
</redirector>
</exec>
问题已解决:你是对的。
<exec executable="cmd" outputproperty="tomcat.version">
<arg value="/c"/>
<arg value="${MY_PROJ}\tomcat\bin\version.bat"/>
<env key="CATALINA_HOME" value="${MY_PROJ}\tomcat\"/>
<redirector>
<outputfilterchain>
<tokenfilter>
<containsstring contains="Server version"/>
<replaceregex pattern="Server version: Apache Tomcat/(.*)$" replace="\1"/>
</tokenfilter>
</outputfilterchain>
</redirector>
</exec>
<echo message="tomcat.version: ${tomcat.version}"/>
输出:
versioncat:
[echo] tomcat.version: 6.0.33
最后但并非最不重要的,有人能回答或建议我上一个评论查询的解决方法吗?这个愚蠢的问题