我想创建一个批处理文件,该文件遍历目录中的txt文件,每行包含#EXTINF,删除最后15个字符..
基本上如果可能的话,我想修剪任何长于某个数字的行中的最后15-20个字符。由于某种原因,我有一个软件,如果该行太长,它将搞砸数据。
感谢
答案 0 :(得分:1)
有关使用Windows批处理修改文本文件的各种选项,请参阅How can you find and replace text in a file using the Windows command-line environment?。
以下简单代码使用REPL.BAT来截断以{400}字符开头的#extinf
(不区分大小写)的长行。小于600个字符的行将完整保留。
type test.txt|repl.bat "^(#extinf.{593}).*$" "$1" I>test.txt.new
move /y test.txt.new test.txt >nul
答案 1 :(得分:0)
User231429写道:“我需要脚本遍历目录中的所有文件,并且每行以#extinf开头,从末尾删除XX个字符。”
下面的批处理文件正是这样做的:
@echo off
setlocal EnableDelayedExpansion
for %%f in (*.txt) do (
(for /F "usebackq delims=" %%a in ("%%f") do (
set "line=%%a"
if "!line:~0,7!" equ "#extinf" set "line=!line:~0,-XX!"
echo !line!
)) > "%%~Nf.new"
)
REM del *.txt
REM ren *.new *.txt
请注意,您必须在长if
命令中用XX替换XX。
测试此程序并检查* .NEW文件中的结果。如果结果正确,请从最后两行中删除REM部分。
此程序会从文件中删除感叹号。如果需要,可以修复此细节。