我正在尝试编写一个batch file,它将查看小文本文件中的每个字符(实际上是CUE工作表),并执行三件事 – 删除所有问号,用连字符replace任何斜线标记,并用两个冒号replace冒号连字符 – 按照以下示例中的第二行。
TRACK 01 AUDIO TITLE "Colon: Slash / Question Mark?" (would be changed to) TITLE "Colon -- Slash - Question Mark"
我知道如何使用findstr将包含这些字符的行复制到一个新的文本文件(但只有这些行),而不是如何执行search和replace。 而且还有去除领先空间的不利后果,我希望保留这些空间。 不知道什么是正确的方法在这里。 (我应该补充说,由于各种原因,我不喜欢使用第三方实用程序。)
@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
结果。
为括号括起来允许重定向到指定的文件。
模式设置为“var1 =!var2: stringtoreplace = replacementstring !” 如记录, !
代替%
使用delayedexpansion。
请注意,您的文本指定了as的replacemnt字符串,而您的示例显示它被替换为“ Space – ”
你可以使用Powershell来解决这个问题。
打开PowerShell并键入
(Get-Content C:\Users\Admin\StackOverflow\some.txt).Replace(":"," - -") | Set-Content C:\Users\Admin\StackOverflow\SomeModified.txt
基本上,
Get-Content将打开文件。
。替换文字(旧文字,新文字)
| Set-Content <path>在不同的文件上输出。
截图