我试图找到并在一个文件中的另一个字符串替换字符串。
我有一个XML文件,其中port=
存在于多个位置。 每个端口有像不同的值port="443"
和port="8011"
。
我想找到一个特定的port
和它的价值。 的当前值port
作为值变化没有在批处理执行公知的。 一个具体的这个变量和批处理执行未知值port
在XML文件中的属性应与我作为参数传递到批处理文件中一个新的值来代替。
我如何才能找到特定的port
从一个文件中值,并用新值取代它呢?
我已经使用了替换字符串下面的代码,但我无法改变它的值。
if EXIST %ConfPath% (echo "here") ELSE (
for /f "tokens=1,* delims=¶" %%A in ( '"type %file%"' ) do (
SET string=%%A
SET modified=!string:%oldport%=%newport%!
echo !modified!
)
)
编辑:
下面是我的XML文件:
<?xml version='1.0' encoding='utf-8'?>
<Server port="first" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="second" redirectPort="forth" />
<Connector port="third" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8" keystoreFile="myKey" keystorePass="myPass" />
</Service>
</Server>
没有出现在上述文件中的四个端口。
我想改变port="third"
与port="newPort"
。
到现在为止我已经更换了字符串,但我不能用剩下的文件来连接它。
首先,我得到行号之后,我用引号和替换分裂。 但我我不能来连接它。 缺少的东西,但我无法找到它。
我的批号为:
for /f "tokens=1,* delims=" %%A in ( '"type %file%"' ) do (
SET /a line+=1
IF !line!==11 (
SET string=%%A
for /f tokens^=2^ delims^=^" %%I in ( "!string!" ) do (set repPort=%%I)
SET modified=!string:repPort=PORT!
)
echo !modified!
)
这是正确的做法,我怎么可以连接?