我试图编写一个批处理文件来查看小文本文件中的每个字符(实际上是CUE表)并做三件事 - 删除所有问号,用连字符替换任何斜杠标记并用两个连字符替换冒号 - 如下例中的第二行所示。
TRACK 01 AUDIO
TITLE "Colon: Slash / Question Mark?"
(would be changed to)
TITLE "Colon -- Slash - Question Mark"
我知道如何使用findstr将包含这些字符的行复制到新的文本文件(但只包括那些行),而不是如何进行搜索和替换。而且,findstr也有删除前导空格的不必要后果,我希望保留这些空间。不确定这里的方法是什么。 (我应该补充说,出于各种原因,我不想使用第三方实用程序。)
答案 0 :(得分:4)
您可以使用Powershell轻松解决此问题。
打开PowerShell并输入此
(Get-Content C:\Users\Admin\StackOverflow\some.txt).Replace(":"," - -") | Set-Content C:\Users\Admin\StackOverflow\SomeModified.txt
基本上,
Get-Content 会打开该文件。
.Replace 替换文字(旧文字,新文字)
<强> | Set-Content &lt;路径&gt;在不同的文件上输出。
答案 1 :(得分:3)
@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
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件调用延迟扩展以允许在代码块中操作字符串。
将文件的每一行都读到%%a
line
;将每个?
替换为 no ,将/
替换为-
,将:
替换为两个,并echo
结果。
括号for
允许重定向到指定文件。
模式设置为“var1 =!var2: stringtoreplace = replacementstring !”记录在案,!
代替%
使用delayedexpansion。
请注意,您的文字将:
的替换字符串指定为--
,而您的示例显示它被替换为“ Space - ”