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

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

Ветеран


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

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


BMW09121985, факт подтверждаю. Причины мне не ясны: обычный текст, состоящий из банальных цифр, нет проблем с концами строк. Не знаю, на что можно грешить во входных данных.

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

Const SystemFolder = 1
Const ForWriting   = 2

Dim lngErrCode

Dim objFSO

Dim strSourceFile
Dim strFilterFile

Dim objDictionary
Dim strLine


lngErrCode = 0

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If UCase(WScript.FullName) = UCase(objFSO.BuildPath(objFSO.GetSpecialFolder(SystemFolder), "cscript.exe")) Then
	If WScript.Arguments.Count = 2 Then
		If WScript.Arguments.Named.Exists("Source") Then
			strSourceFile = WScript.Arguments.Named.Item("Source")
			
			If WScript.Arguments.Named.Exists("Filter") Then
				strFilterFile = WScript.Arguments.Named.Item("Filter")
				
				If objFSO.FileExists(strSourceFile) Then
					If objFSO.FileExists(strFilterFile) Then
						Set objDictionary = WScript.CreateObject("Scripting.Dictionary")
						
						With objFSO
							With .OpenTextFile(strFilterFile)
								Do Until .AtEndOfStream
									strLine = .ReadLine()
									
									If Not objDictionary.Exists(strLine) Then
										objDictionary.Add strLine, strLine
									End If
								Loop
								
								.Close
							End With
							
							With .OpenTextFile(strSourceFile)
								Do Until .AtEndOfStream
									strLine = .ReadLine()
									
									If Not objDictionary.Exists(strLine) Then
										WScript.StdOut.WriteLine strLine
									End If
								Loop
								
								.Close
							End With
						End With
						
						objDictionary.RemoveAll
						Set objDictionary = Nothing
					Else
						WScript.StdErr.WriteLine "Filter file [" & strFilterFile & "] not found"
						ShowUsage 6
					End If
				Else
					WScript.StdErr.WriteLine "Source file [" & strSourceFile & "] not found"
					ShowUsage 5
				End If
				
				Set objFSO = Nothing
			Else
				ShowUsage 4
			End If
		Else
			ShowUsage 3
		End If
	Else
		ShowUsage 2
	End If
Else
	MsgBox "Usage: cscript.exe //nologo " & WScript.ScriptName & " /Source:<Source file> /Filter:<Filter file>", _
		vbExclamation + vbOKOnly, "Error: Use «cscript.exe» executable instead of «wscript.exe»"
	lngErrCode = 1
End If

WScript.Quit lngErrCode
'=============================================================================

'=============================================================================
Sub ShowUsage(lngSetErrCode)
	WScript.StdErr.WriteLine "Usage: cscript.exe //nologo " & WScript.ScriptName & " /Source:<Source file> /Filter:<Filter file>"
	lngErrCode = lngSetErrCode
End Sub
'=============================================================================

На Вашем примере это может выглядеть так:
Код: Выделить весь код
cscript.exe //nologo SomeScript.vbs /Source:0002.txt /Filter:0001.txt 1>0003.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 05-12-2012 | #14