批量替换另一个文本列表中指定的替换文本列表的某些部分

时间:2015-05-17 12:34:10

标签: file text replace

我需要一个bat文件来动态替换文本的某些部分

替换更改通常需要将REPLACEMENT直接插入保存在我电脑中的文本文件中

带有要替换的文本的

文本文件包含类似(D:\ Programmi Installati \ list_to_replace.txt)的行:

home.php&sid=1111111111&hid=2222222222
house.php&sid=3333333333&hid=9999999999
horse.asp&sid=4444444444&hid=2222222222

使用新sid的文本文件替换所有旧sid(D:\ Programmi Installati \ list_new_sid.txt):

9999999999

我需要使用我可以在保存在我的电脑中的文本列表中指定的新sid更新所有OLD sid

最终替换示例:

文本文件(D:\ Programmi Installati \ list_new_sid.txt)包含新的sid,如9999999999

蝙蝠继续使用新sid替换旧sid并将此结果输入(D:\ Programmi Installati \ list_to_replace.txt)

home.php&sid=9999999999&hid=2222222222
house.php&sid=9999999999&hid=9999999999
horse.asp&sid=9999999999&hid=2222222222

这是保存在列表中的示例行

siteaaa.it/en/page.aspx?fqdn=name.vpn.net&ip=10.20.30.40&tcp=0&udp=20788&sid=的 NE WSIDTOREPLACE &安培;藏= 8888888

有必要调整代码以仅替换& sid = AND& hid =之间的部分(我用粗体编写部分以便轻松识别)并且不删除编辑文本的其他部分

你能帮我吗?

谢谢,最诚挚的问候

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal EnableDelayedExpansion

set /P "newSid=" < "c:/programmi/list_new_sid.txt"
(for /F "usebackq delims=" %%a in ("c:/programmi/list_to_replace.txt") do (
   set "url=%%a"
   for /F "delims==&" %%b in ("!url:*sid=!") do (
      set "url=!url:%%b=%newSid%!"
   )
   echo !url!
)) > temp.txt
move /Y temp.txt "c:/programmi/list_to_replace.txt"