배치

2012-02-22 7 views
0

이 파일을 서면으로 지연 확장을 사용하여 내 xml 파일의 일부입니다 tradersoeid는 "dd32261"이고 usersoeid는 "ak15000"입니다. 이것은 완벽하게 작동합니다.배치

하지만 내가하고 싶은 것은 "dd32261_ak15000"의 첫 번째 행 어커런스를 "dd32261_ak15000"으로 바꾸고 그대로 둘째 줄을 바꾸는 것입니다. 그래서 > dd32261_를 발견 할 때마다

dd32261_userid>로 대체하고 > dd32261 <을 발견하면 <

usersoeid>로 교체

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

:

나는 이런 식으로 뭔가를 시도

감사합니다.

답변

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

(210)는 당신이 각 파일에 "d32261"의 첫 번째 행의 occurance "를 교체 할 생각했습니다.

P. 나는 당신이이 줄을 변경하는 것이 좋습니다 :

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

추가 감사합니다, 나는이 시도하고 알려줍니다. – NewQueries

+0

나는 그것을 시도하고 완벽하게 잘 작동합니다! – NewQueries

+0

하지만 Connections.xml 파일에 첫 번째 행이없는 경우가 있습니다. 그래서이 경우, 그것은 tradersoeid의 다음 발생을 tardersoeid_usersoeid로 대체합니다. – NewQueries