2013-12-02 5 views
2

У меня есть текстовый файл со следующим содержимым с некоторыми нежелательными строками, которые я хочу удалить из текстового файла.Как удалить ненужные строки из текстового файла через пакетный файл?

1233,pqry,01/11/2011 
2365698,abcd,2011/01/12 
,defghj,11/12/2013 
,,, 
,,, 
,,, 

В приведенном выше примере мы видим, что существует несколько линий с разделенными запятыми. Я хочу удалить эти строки из своего текстового файла через командный файл. Просьба помочь мне

+0

Вы хотите избавиться от ',,,' линий? – npocmaka

+0

Ваши строки не разделены запятой. Строки разделяются символом «CR/LF». – Endoro

+0

@npocmaka: Да, я хотел избавиться от линий, которые имеют только запятую без каких-либо других значений. – Samraan

ответ

4
ren myFile.txt myFile.txt.old 
findstr /v /b /c:",,," myFile.txt.old > myFile.txt 

Переименовать файл как .old. Найдите все строки, не содержащие «,,,» в начале строки в старом файле, и сохраните ее в исходном файле.

EDITED - адаптироваться к комментариям

Если строки должны быть удалены являются те, которые только с запятыми (я буду включать пробела) и никакого другого значения, то это должны работать

for %%t in (c:\path\*.txt) do (
    ren "%%~ft" "%%~nxt.old" 
    findstr /v /r /c:"^[, ]*$" "%%~ft.old" > "%%~ft" 
) 

Для каждого файла в путь, переименуйте файл в *.old, из этого .old файл извлекает любые строки, не содержащие (/v) регулярное выражение (/r), определенное шаблоном (/c): «от начала строки (^), за которым следует любая последовательность пространств а также запятые ([, ]*) до достигать конца строки ($) ". Выделенные строки отправляются в исходное имя файла.

+0

Спасибо за ваш добрый ответ, но моя проблема в том, что может быть ситуация, когда они будут больше или меньше 3 запятой. так что в этом случае я думаю, что это не будет wrok – Samraan

+1

Если их больше трех, это будет соответствовать. Команда '/ b' в команде говорит, что совпадение должно быть в начале строки, если вы знаете, что одной запятой в начале строки достаточно, чтобы отбросить строку, измените' ',,,' 'на просто' "" '. Другие варианты должны адаптировать выражение соответствия. –

+0

Я отредактировал свои вопросы, могут возникнуть ситуации, когда начинается линия, и поэтому в этой ситуации она также удаляет эту строку ... любезно посмотрите на это и предложите мне новый подход – Samraan

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