如何查找可变长度的文本字符串并替换为固定的字符串文本

时间:2016-04-03 16:27:54

标签: string windows batch-file find

我需要在input.txt文件中找到一个字符串

Current Playback Device ID=2A99FA92-E624-4650-A032-DA719D9B03D5

并将其替换为:

Current Playback Device ID=721D0FD1-DD46-11d0-8AAC-00A0C91D299F

但是考虑到替换必须也是原始字符串 - 在这种情况下Current Playback Device ID=2A99FA92-E624-4650-A032-DA719D9B03D5 - 包含不同的聊天者

例如

Current Playback Device ID=AAAAAAAA-E624-AAAA-A032-AAAAAAAAAAAA

Current Playback Device ID=AAA2AAAAAAAAAAA

字符串"Current Playback Device ID="已修复 但"="之后的值可能不同

在所有情况下,最终结果必须是

Current Playback Device ID=721D0FD1-DD46-11d0-8AAC-00A0C91D299F

我该怎么办?

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q36387900.txt"
SET "outfile=%destdir%\outfile.txt"
SET "replacementstring=721D0FD1-DD46-11d0-8AAC-00A0C91D299F"
(
FOR /f "usebackqtokens=1*delims=" %%a IN ("%filename1%") DO (
 FOR /f "delims==" %%x IN ("%%~a") DO (
  IF "%%x"=="Current Playback Device ID" (
   ECHO(%%x=%replacementstring%
  ) ELSE (ECHO(%%a
  )
 )
)
)>"%outfile%"

GOTO :EOF

您需要更改sourcedirdestdir的设置以适合您的具体情况。

我使用了一个名为q36387900.txt的文件,其中包含一些虚拟数据供我测试。

生成定义为%outfile%

的文件

将删除空行。

阅读每一行。对行读取标记并将=之前的任何字符串分配给%%x。如果该字符串与目标字符串匹配,则写出starget + replacement string;否则只是反复阅读该行。