2013-06-02 3 views
0

я хотел бы создать пакетный файл, который проходит через текстовые файлы в директории и в каждой строке, которая имеет #EXTINF в нем, удалить последние 15 символов ..Пакетных комплектации символов в EOL

в основном, если это Возможно, я хотел бы обрезать последние 15-20 символов из любых строк, длина которых превышает определенный номер. по какой-то причине у меня есть программное обеспечение, которое, если линия слишком длинная, приведет к испорчению данных.

благодаря

+2

Вы понимаете, что это два _всего разных вопроса? Какой из них вы хотите решить? Если вы сказали «удалить последние 15-20 символов», мы НЕ знаем, что делать! – Aacini

+0

Кроме того, может ли #EXTINF быть частью текста, который нужно удалить? иногда? всегда? никогда? – dbenham

+0

привет @ Аасини. Спасибо за ответ. Мне нужен сценарий для просмотра всех файлов в каталоге, и каждая строка, начинающаяся с #extinf, удаляет XX число символов с конца. по какой-то причине мой скрипт выводит плохие данные, если количество символов в строке превысило 600. – user2314297

ответ

1

См How can you find and replace text in a file using the Windows command-line environment? различные варианты для модификации текстовых файлов, используя пакет Windows.

Следующий простой код использует REPL.BAT для усечения длинных строк, которые начинаются с #extinf (без учета регистра) на 600 символов. Линии длиной менее 600 символов сохраняются полностью.

type test.txt|repl.bat "^(#extinf.{593}).*$" "$1" I>test.txt.new 
move /y test.txt.new test.txt >nul 
+0

выглядит великолепно. любой шанс, что у вас есть идея, как сохранить неанглийские символы? файлы имеют иврит внутри них, и новые выходные файлы закручивают их. Я добавил CHCP 1255, но он не помог – user2314297

+0

@ user2314297 - Это неожиданно. Я выполнил тест по файлу со всеми 255 байтами ANSI и не обнаружил повреждения. Является ли ваш файл ANSI или Unicode? Я не делал никаких тестов с Unicode - я бы не был шокирован, если в REPL.BAT необходимо внести изменения для поддержки Unicode. – dbenham

+0

Что я должен добавить в REPL.bat для поддержки unicode? – user2314297

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 

Обратите внимание, что вы должны заменить XX рядом в долгосрочной if команды.

Проверьте эту программу и проверьте результат в файлах * .NEW. Если результат верен, удалите REM-часть из двух последних строк.

Эта программа удаляет восклицательные знаки из файла. При необходимости эта деталь может быть исправлена.

+0

, проверяя это. любая идея, как я могу добавить проверку линии, будут ли обрезаны только строки с более чем 600 символами? – user2314297

+0

использовать 'set 'line =! Line: ~ 0,600!" 'Вместо' set' line =! Line: ~ 0, -XX! "'. Это сократит линию до 600 символов, но оставляет ее, как если бы она имела менее 600 символов. – Stephan

+0

похоже работа. любая идея поддержки Unicode? когда я сохраняю пакетный файл в utf8, он закручивает выходной файл. я нуждаюсь в нем для поддержки иврита – user2314297

Смежные вопросы