从特定行中删除最后一个字符

时间:2013-04-24 06:56:33

标签: batch-file character

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

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

感谢

2 个答案:

答案 0 :(得分:0)

对于一个文件:

@Echo OFF

(For /F "Usebackq Tokens=*" %%# in ("MyFile.txt") Do (
    Echo "%%#" | FIND /I "#EXTINF" 1>NUL && (
        Set "Line=%%#"
        Call Set "Line=%%Line:~0,-1%%"
        Call Echo %%Line%%
    ) || (
        Echo %%#
    )
))>"MyNewFile.txt"

Pause&Exit

适用于所有文件:

@Echo OFF

For %%@ in (*.txt) DO (

    (For /F "Usebackq Tokens=*" %%# in ("%%@") Do (

        Echo "%%#" | FIND /I "#EXTINF" 1>NUL && (
            Set "Line=%%#"
            Call Set "Line=%%Line:~0,-1%%"
            Call Echo %%Line%%
        ) || (
            Echo %%#
        )

    ))>"%%@_New.txt"
)

Pause&Exit

答案 1 :(得分:0)

GnuSed是一种比批量文本编辑更好的工具。 这是针对单个文件的

@echo off
sed "s/^\(.*#EXTINF.*\).$/\1/" "filein.txt" >"fileout.txt"

和多个文件(将从fileone.txt生成fileone.new.txt)

@echo off
for /f "delims=" %%a in ('dir *.txt /b') do sed "s/^\(.*#EXTINF.*\).$/\1/" "%%a" >"%%~na.new%%~xa"