2012-02-22 9 views
0

これをファイルへの書き込みで遅延拡張を使用して、私のxmlファイルの一部です。 「dd32261」であり、usersoeidが「ak15000」であるトレーダーエイドのものである。これは完璧に動作します。バッチ

しかし、私は "dd32261_ak15000"として "dd32261"の最初の行の出現を置き換え、そのまま2番目の行を置き換えることです。それは、> dd32261_を見つけるたび

dd32261_userid>と交換し、それが> dd32261 <を見つけたときに<

usersoeid>に置き換える

set "val1=>" 
set "val2=_"  
set "str=%val1%%tradersoeid%%val2%" 

私はこのような何かを試してみました

ありがとうございました

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" 
) 

答えて

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 『「の最初の行のoccurance』を交換したいと仮定。

P.S.私はあなたがこの行を変更することをお勧め:

for /F "usebackq tokens=*" %%b in ("%%G.temp") do (

1本で:

for /F "usebackq delims=" %%b in ("%%G.temp") do (

"delimsは=" 行全体取得するための標準的な方法です。 "tokens = *"は複数のスペースとタブをただ一つのスペースで変更します。

EDITは:新バージョンが

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" 
) 
+0

を追加したおかげで、私はこれを試してみて、あなたが知っているだろう。 – NewQueries

+0

私はそれを試して、それは完全にうまく動作します! – NewQueries

+0

しかし、Connections.xmlファイルには最初の行がないことがあります。その場合、それはtradersoeidの次の出現をtardersoeid_usersoeidに置き換えます。 – NewQueries