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

Показать сообщение отдельно

Ветеран


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

Профиль | Отправить 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