这是我的xml文件的一部分:
<anyType xsi:type="xsd:string">dd32261_RealTimeRisk</anyType>
<anyType xsi:type="xsd:boolean">false</anyType>
<anyType xsi:type="xsd:string">dd32261</anyType>
以下是我的代码:
for /R c:\ABC\TraderFolders\%tradersoeid%\PROD %%G in (Connections.xml) do (
MOVE "%%G" "%%G.temp"
for /f "usebackq tokens=*" %%b in ("%%G.temp") do (
set write=%%b
echo !write:%tradersoeid%=%usersoeid%! >> "%%G"
)
del "%%G.temp"
)
上面的代码所做的是将“dd32261”替换为“dd32261”与“ak15000”的usersoeid。这很完美。
但我想要做的是将“dd32261”的第一行出现替换为“dd32261_ak15000”,并按原样替换第二行。
我试过这样的事情:
set "val1=>"
set "val2=_"
set "str=%val1%%tradersoeid%%val2%"
所以无论何时找到&gt; dd32261 _ ,请将其替换为&gt; dd32261_userid
当找到&gt; dd32261&lt; 时将其替换为&gt; usersoeid&lt;
由于
echo off
set tradersoeid=dd32261
set usersoeid=ak15000
set ws_namestr=%tradersoeid%_%usersoeid%
set id_=%tradersoeid%_
for /R c:\ABC\TraderFolders\%tradersoeid%\PROD %%G in (Connections.xml) do (
MOVE "%%G" "%%G.temp"
pause>nul
for /F "usebackq delims=" %%b in ("%%G.temp") do (
set write=%%b
for /f %%t in ("!id_!") do echo %%t
for /F %%u in ("!ws_namestr!") do set newWrite=!write:%%t=%%u!
echo !newWrite! >> "%%G"
if not "!newWrite!" == "!write!" (
set id_=%tradersoeid%
ws_namestr=%usersoeid%
)
)
del "%%G.temp"
)
答案 0 :(得分:1)
set tradersoeid=dd32261
for /R c:\ABC\TraderFolders\%tradersoeid%\PROD %%G in (Connections.xml) do (
MOVE "%%G" "%%G.temp"
set usersoeid=%tradersoeid%_ak15000
for /F "usebackq tokens=*" %%b in ("%%G.temp") do (
set write=%%b
for /F %%u in ("!usersoeid!") do set newWrite=!write:%tradersoeid%=%%u!
echo !newWrite! >> "%%G"
if not "!newWrite!" == "!write!" set usersoeid=ak15000
)
del "%%G.temp"
)
我原以为你想要在每个文件中替换“d32261”的第一行出现。
P.S。我建议你改变这一行:
for /F "usebackq tokens=*" %%b in ("%%G.temp") do (
这一个:
for /F "usebackq delims=" %%b in ("%%G.temp") do (
“delims =”是获取整行的标准方法。 “tokens = *”只用一个空格更改多个空格和制表符。
编辑:添加了新版本
set tradersoeid=dd32261
set usersoeid=ak15000
for /R c:\ABC\TraderFolders\%tradersoeid%\PROD %%G in (Connections.xml) do (
MOVE "%%G" "%%G.temp"
for /F "usebackq tokens=*" %%b in ("%%G.temp") do (
set write=%%b
set newWrite=!write:%tradersoeid%_=%tradersoeid%_%usersoeid%_!
if "!newWrite!" == "!write!" set newWrite=!write:%tradersoeid%=%usersoeid%!
echo !newWrite! >> "%%G"
)
del "%%G.temp"
)