EOL的批量修剪字符

时间:2013-06-02 11:17:09

标签: batch-file eol trim

我想创建一个批处理文件,该文件遍历目录中的txt文件,每行包含#EXTINF,删除最后15个字符..

基本上如果可能的话,我想修剪任何长于某个数字的行中的最后15-20个字符。由于某种原因,我有一个软件,如果该行太长,它将搞砸数据。

感谢

2 个答案:

答案 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部分。

此程序会从文件中删除感叹号。如果需要,可以修复此细节。