2014-12-03 96 views
2

解決此問題時相當接近。批處理腳本查找Apache Tomcat正在運行的端口

SET settings=D:\tomcat\conf\server.xml 
FOR /F "eol=p tokens=1-2* delims==" %%A IN ('TYPE %settings% 2^> NUL ^| FINDSTR.exe /L /C:"\<Connector port\="') DO echo %%B 

pause 

的Apache Tomcat通常運行在我們的測試/生產/ QA /環境80端口,但是我們是在8080端口上,並希望解析出端口是100%準確的一對夫婦的實例。

下面是結果:

D:\WORK\Scripts\test>echo "80" protocol 
"80" protocol 

D:\WORK\Scripts\test>echo "8443" protocol 
"8443" protocol 

D:\WORK\Scripts\test>echo "8009" protocol 
"8009" protocol 

望着server.xml中,我們有(第一個是正確的):

<Connector port="80" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" /> 

以及(不得不刪除的意見發佈) - 和被註釋掉把 「關」:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" 
      clientAuth="false" sslProtocol="TLS" /> 

和:

在端口8009

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

,並定義一個AJP 1.3連接器..下面是完成代碼來顯示端口號:

SET settings=D:\tomcat\conf\server.xml 
FOR /F "eol=p tokens=1-2* delims==" %%A IN ('TYPE %settings% 2^> NUL ^| FINDSTR.exe /L /C:"\<Connector port\="') DO (
SET PORT=%%B 
SET PORT=%PORT:" protocol=% 
SET PORT=%PORT:"=% 

goto :break 
) 
:break 
pause 

謝謝!

+0

打破的循環,這樣總是第一個是正確的? – npocmaka 2014-12-03 17:30:11

回答

2
@echo off 

SET settings=D:\tomcat\conf\server.xml 
FOR /F "eol=p tokens=1-2* delims==" %%A IN ('TYPE %settings% 2^> NUL ^| FINDSTR.exe /L /C:"\<Connector port\="') DO (
echo %%B 
goto :break 
) 
:break 
pause 

如果第一個節點是永遠正確的,你可以轉到

+0

這應該做的伎倆!謝謝! – Leptonator 2014-12-03 18:06:26