0
這是我的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"
)
什麼上面的代碼的作用是將替換所有所有腦幹tradersoeid是「dd32261」,usersoeid是「ak15000」。這工作完美。
但我想要做的是將「dd32261」的第一行發生替換爲「dd32261_ak15000」並將其替換爲第二行。
我想是這樣的:
set "val1=>"
set "val2=_"
set "str=%val1%%tradersoeid%%val2%"
所以只要找到> dd32261_用>替換dd32261_userid
,並在找到> dd32261 <用>替換usersoeid <
謝謝
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"
)
謝謝,我會嘗試這一點,並讓你知道。 – NewQueries 2012-02-23 13:12:52
我試過了,它工作得很好! – NewQueries 2012-02-23 15:08:44
但是,我看到Connections.xml文件有時沒有第一行。所以在這種情況下,它會用tardersoeid_usersoeid替換tradersoeid的下一次發生。我不希望出現這種情況,所以我試圖像下面的代碼: – NewQueries 2012-02-23 15:14:50