我正在尝试编写一个批处理文件,它将查看一个小文本文件(实际上是一个 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
and destdir
以适合您的情况。
我使用了一个名为q42482508.txt
包含您的数据供我测试。
生成定义为 %outfile% 的文件
调用延迟扩展以允许在代码块中操作字符串。
读取文件的每一行%%a
thence line
;替换每个?
with nothing, /
与一个-
and :
有两个,并且echo
结果。
加上括号for
允许重定向到指定的文件。
模式设置为“var1=!var2:替换字符串=替换字符串!” 据记载,!
代替%
使用延迟扩展。
Note that your text specifies the replacemnt string for :
as --
whereas your example shows it being replaced by "Space--"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)