Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и удаление текста в файле

Ответить
Настройки темы
CMD/BAT - Поиск и удаление текста в файле

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемые эксперты и форумчане, помогите решить задачу пожалуйста:
Есть файл 1.txt(список), из которого нужно удалить те строки, которые содержатся в 2.txt(список)

Способ, предложенный amel27
Код: Выделить весь код
@echo off  FindStr /? >1.txt FindStr /? >2.txt  FindStr /IVG:2.txt 1.txt >3.txt FindStr/IRVG:2.txt 1.txt >4.txt FindStr/IVLG:2.txt 1.txt >5.txt
не работает(


В первом, как и во втором могут быть цифры, звездочки, точки ...

Отправлено: 13:32, 17-10-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата ajakzs:
Способ, предложенный amel27 »
Это Ваш способ, а не коллеги amel27. А способ работает.

Отправлено: 16:07, 17-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Если кто не умеет читать, я и написал СПОСОБ, предложенный(который предложил) amel27.
У меня два файла и после прогона этим способом в изначальном файле количество строк уменьшается не на количество строк во 2, а раза в 3 большем.

Отправлено: 16:50, 17-10-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


ajakzs, для тех, кто не умеет читать: выкладывайте архив с образцом исходного (1.txt) файла, с образцом файла-фильтра (2.txt), на которых «не работает».

Цитата ajakzs:
я и написал СПОСОБ, предложенный(который предложил) amel27. »
И, да — приведите ссылку, где он предлагал это.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:01, 17-10-2012 | #4


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar bat.rar
(894.9 Kb, 11 просмотров)

Собственно)

Отправлено: 00:28, 18-10-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


ajakzs, есть подозрение, что первый файл в кодировке UTF-8, но, поскольку он без BOM — работает:
Код: Выделить весь код
findstr.exe /v /g:"2.txt" "1.txt" >"3.txt"
Размеры:
Код: Выделить весь код
╔══════════════════ E:\Песочница\0183 ════╤════════╤═════╗
║и              Имя                │Размер│  Дата  │Время║
║⌂..                               │ Вверх│18.10.12│04:22║
║ 1                             txt│2158 К│17.10.12│15:41║
║ 2                             txt│ 74500│17.10.12│16:02║
║ 3                             txt│1959 К│18.10.12│04:22║
║                                  │      │        │     ║
…

Цитата ajakzs:
У меня два файла и после прогона этим способом в изначальном файле количество строк уменьшается не на количество строк во 2, а раза в 3 большем. »
Я понял, что Вы подразумевали. Должно быть, кодировка привнесла-таки свою толику разброда в работу findstr.exe, что и отразилось на конечном результате.

Попробуйте на WSH:
читать дальше »
Код: Выделить весь код
Option Explicit

Const ForReading   = 1
Const ForWriting   = 2


Dim strSourceFile
Dim strFilterFile
Dim strDestFile

Dim objTS
Dim objDictionary
Dim strLine


strSourceFile = "E:\Песочница\0183\1.txt"
strFilterFile = "E:\Песочница\0183\2.txt"
strDestFile   = "E:\Песочница\0183\3.txt"


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With WScript.CreateObject("Scripting.FileSystemObject")
	With .OpenTextFile(strFilterFile, ForReading)
		For Each strLine In Split(.ReadAll(), vbCrLf)
			If Not objDictionary.Exists(strLine) Then
				objDictionary.Add strLine, 1
			'Else
			'	objDictionary.Item(strLine) = objDictionary.Item(elem) + 1
			End If
		Next
		
		.Close
	End With
	
	Set objTS = .OpenTextFile(strDestFile, ForWriting, True)
	
	With .OpenTextFile(strSourceFile, ForReading)
		For Each strLine In Split(.ReadAll(), vbCrLf)
			If Not objDictionary.Exists(strLine) Then
				objTS.WriteLine strLine
			End If
		Next
		
		.Close
	End With
	
	objTS.Close
	
	Set objTS = Nothing
End With

WScript.Quit 0

указав в скрипте (я не стал делать ни обработку параметров, ни проверку существования файлов) свои пути для исходного, фильтрующего и результирующего файлов в:
Код: Выделить весь код
strSourceFile = "E:\Песочница\0183\1.txt"
strFilterFile = "E:\Песочница\0183\2.txt"
strDestFile   = "E:\Песочница\0183\3.txt"

Последний раз редактировалось Iska, 18-10-2012 в 05:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:34, 18-10-2012 | #6


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, буду пробовать разобраться с вашим советом)

Отправлено: 09:18, 18-10-2012 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и удаление текста в файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск и удаление повторяющегося тескста в текстовом файле Sisimon Скриптовые языки администрирования Windows 0 20-12-2011 10:07
CMD/BAT - [решено] Поиск текста в *.inf файле и вывод на экран 4zz Скриптовые языки администрирования Windows 1 25-07-2011 16:23
PowerShell - [решено] Поиск и удаление дублей в csv-файле IvanXXL Скриптовые языки администрирования Windows 4 19-07-2011 13:14
CMD/BAT - [решено] Поиск и удаление строки в файле по сложным условиям m0nkrus Скриптовые языки администрирования Windows 9 26-06-2011 10:37
[решено] Поиск и замена текста в файле TERMINAL AutoIt 6 16-03-2011 17:49




 
Переход