[英]Replacing characters in a text file from Windows batch file
我正在尝试编写一个批处理文件,该文件将查看一个小文本文件(实际上是CUE表)中的每个字符,并执行三件事-删除所有问号,将所有斜杠替换为连字符并将冒号替换为两个连字符-按照下面示例中的第二行。
TRACK 01 AUDIO
TITLE "Colon: Slash / Question Mark?"
(would be changed to)
TITLE "Colon -- Slash - Question Mark"
我知道如何使用findstr将包含那些字符的行复制到新的文本文件(但仅限那些行)中,而不是如何进行搜索和替换。 findstr还具有删除前导空格的不良后果,我希望保留该空格。 不知道这里正确的方法是什么。 (我应该补充一点,由于种种原因,我宁愿不使用第三方实用程序。)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q42482508.txt"
SET "outfile=%destdir%\outfile.txt"
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
SET "line=%%a"
SET "line=!line:?=!"
SET "line=!line:/=-!"
SET "line=!line::=--!"
ECHO !line!
)
)>"%outfile%"
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的情况。
我使用了一个名为q42482508.txt
的文件, q42482508.txt
包含用于测试的数据。
产生定义为%outfile%的文件
调用延迟扩展以允许在代码块中操纵字符串。
阅读该文件的每一行%%a
从那里line
; 更换每个?
一无所有 /
带有一个-
和:
带有两个,然后echo
显结果。
括号内的for
允许重定向到指定文件。
模式设置为“ var1 =!var2: stringtoreplace = replacementstring !” 根据记录, !
代替%
以使用延迟扩展。
请注意,您的文本指定replacemnt字符串:
作为--
而你的例子说明它被替代“ 空间 - ”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.