2015-09-24 3 views
0

Я пытаюсь скопировать часть файла abc.txt в файл def.txt с помощью командного скрипта Windows.Пропустить строку с определенной строкой из файла - Пакетный скрипт

abc.txt

Connected to: Oracle Database 11g Enterprise Edition Release 
11.2.0.4.0 - 64bit Production. With the Partitioning, Automatic Storage 
Management, OLAP, Data Mining and Real Application Testing options. 

About to export specified tables via Conventional Path ... 
... exporting table    table_1  2000 rows exported 
..... exporting table    table_2  456512 rows exported 
. . exporting table    table_3 So on... 
Export successful with warnings. table_1 has some issue. 

def.txt

Connected to: Oracle Database 11g Enterprise Edition Release 
11.2.0.4.0 - 64bit Production. With the Partitioning, Automatic Storage 
Management, OLAP, Data Mining and Real Application Testing options. 

About to export specified tables via Conventional Path ... 
Export successful with warnings. table_1 has some issue. 

Короче говоря, я хочу, чтобы пропустить строки, которые оказывают строку "экспорт" и переместить результат def.txt. Я попытался использовать for /F, но не смог этого добиться. Не могли бы вы помочь. Заранее спасибо.

+0

Спасибо за ответ. findstr/v отлично подходит для меня. Но если я хочу удалить точки только «...», независимо от количества точек из abc.txt. Есть ли способ? –

ответ

3
findstr /v /c:"exporting" abc.txt > def.txt 

Не нужно перебирать файл. Просто отфильтруйте строки во входном файле, который не соответствует (/v), содержащему указанный литерал, и отправьте вывод в указанный файл.

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

@echo off 
    setlocal enableextensions disabledelayedexpansion 
    > def.txt (
     for /f "tokens=1,* delims=:. " %%a in (' 
      findstr /n "^" abc.txt 
     ') do echo(%%b 
    ) 

Здесь файл обрабатывается findstr пронумеровать строки (до налитая пустых строк в исходном файле), выход обработанного командой for /f с delims и tokens которые настроены на удаление стартовых пробелов/точек/двоеточий в выходных строках.

+0

Спасибо за ответ. findstr/v отлично подходит для меня. Но если я хочу удалить точки только «...», независимо от количества точек из abc.txt. Есть ли способ? –

+0

@SwaroopNarasimha. Если вы хотите удалить только точки, вам потребуется выполнить итерацию файла. См. Обновленный ответ. –

2

Это не очень отличается от решения MC ND - это еще один вариант: в данный момент он чувствителен к регистру, но имеет переключатель /i, чтобы изменить это.

find /v "exporting" <abc.txt> def.txt 
Смежные вопросы