Wal*_*ers 0 windows text batch-file
我正在尝试编写一个批处理文件,该文件将查看一个小文本文件(实际上是CUE表)中的每个字符,并执行三件事-删除所有问号,将所有斜杠替换为连字符并将冒号替换为两个连字符-按照下面示例中的第二行。
TRACK 01 AUDIO
TITLE "Colon: Slash / Question Mark?"
(would be changed to)
TITLE "Colon -- Slash - Question Mark"
Run Code Online (Sandbox Code Playgroud)
我知道如何使用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
Run Code Online (Sandbox Code Playgroud)
您需要更改的设置sourcedir,并destdir以适合你的情况。
我使用了一个名为q42482508.txt包含您的数据的文件进行测试。
生成定义为 %outfile% 的文件
调用延迟扩展以允许在代码块中操作字符串。
读取文件的每一行到%%a那里line;替换每个?有没有,/有一个-和:两个,和echo结果。
括号for允许重定向到指定的文件。
模式设置为 "var1=!var2: stringtoreplace = replacementstring !" 如文档所述,!代替%使用延迟扩展。
请注意,您的文本指定了替换字符串:as--而您的示例显示它被替换为“ Space--”
您可以使用Powershell轻松解决此问题。
打开PowerShell并输入
(Get-Content C:\Users\Admin\StackOverflow\some.txt).Replace(":"," - -") | Set-Content C:\Users\Admin\StackOverflow\SomeModified.txt
Run Code Online (Sandbox Code Playgroud)
基本上,
Get-Content将打开文件。
。替换文本(旧文本,新文本)
| Set-Content <path>以在不同文件上输出。
| 归档时间: |
|
| 查看次数: |
17324 次 |
| 最近记录: |