簡體   English   中英

批處理腳本可一次查找和替換2個不同的字符串

[英]Batch script to find and replace 2 different strings at once

我有一個類似此示例的XML文件:

  <fruit>
      <desc>xxx / yyy / zzz</desc>
  </fruit>
  <fruit>
      <desc></desc>
  </fruit>
  <fruit>
      <desc>abc / def / ghi</desc>
  </fruit>

我正在使用批處理腳本來修復節點“ desc”。 這是修復后的結果:

  <fruit>    
      <desc>xxx/yyy/zzz</desc>    
  </fruit>    
  <fruit>    
      <desc>N/A</desc>    
  </fruit>    
  <fruit>    
      <desc>abc/def/ghi</desc>    
  </fruit>    

如何替換2個不同的字符串而不掃描所有文件兩次? 這是腳本:

@echo off
setlocal enabledelayedexpansion

set "input_xml=xmlfile.xml"

set "search=^<desc^>^</desc^>"
set "search2= / "
set "replace=^<desc^>N/A^</desc^>"
set "replace2=/"
for /f "delims=" %%i in ('type "!input_xml!" ^& break ^> "!input_xml!" ') do (
  set FixNullNode=%%i
  echo !FixNullNode:%search%=%replace%! >>"!input_xml!" 
)
for /f "delims=" %%v in ('type "!input_xml!" ^& break ^> "!input_xml!" ') do (
  set FixSpaceSlash=%%v
  echo !FixSpaceSlash:%search2%=%replace2%! >>"!input_xml!" 
)
pause

謝謝

只需將第二個替換項移入第一個for命令中即可。

@echo off
setlocal enabledelayedexpansion

set "input_xml=xmlfile.xml"

set "search=^<desc^>^</desc^>"
set "search2= / "
set "replace=^<desc^>N/A^</desc^>"
set "replace2=/"
for /f "delims=" %%i in ('type "!input_xml!" ^& break ^> "!input_xml!" ') do (
  set "Fix=%%i"
  set "Fix=!Fix:%search%=%replace%!"
  echo !Fix:%search2%=%replace2%! >>"!input_xml!" 
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM