1

Тема: VBS: Добавление текста в файл без дублирования

Добрый день !
необходимо добавить две строчки в файл но перед добавлением проверить нет ли их в нем что бы не было дублирования 
файл C:\test\test.txt
c содержимым:
pppP1    2010/str
pppP2   2010/str
pppP3   2010/str
в конце пустая строка

нужно добавить две строчки в конец файла
sssP10 2011/str
sssP11 2011/str
и сохранить пустую строчку в конце файла

Сделать нужно очень, очень срочно
помогите пожалуйста

2

Re: VBS: Добавление текста в файл без дублирования

Вот пример, содержащий необходимый код.

'Created by OldBoa
Option Explicit
Dim WshShell,WshNetwork,Username,oDrives,i,Paths,objFSO,File,logfile,Match,TextStream,Str
Set WshShell = CreateObject("WScript.Shell")
Set objFSO=CreateObject("Scripting.FileSystemObject")
Username = WshShell.ExpandEnvironmentStrings("%USERNAME%")
File = "\\server\share$\NetPath\" & Username & ".txt"
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives
Paths = ""
If objFSO.FileExists(File) then
    Set logfile = objFSO.getfile(File)
    For i = 0 to oDrives.Count - 1 Step 2
        Match = 0
        Set TextStream = logfile.OpenAsTextStream(1)
        While Not TextStream.AtEndOfStream
            Str = TextStream.ReadLine()
            If Str = oDrives.Item(i+1) Then
                Match = 1
            End If
        Wend
        If Not Match = 1 Then
            Paths = Paths & oDrives.Item(i+1) & vbCrLf
        End If
    Next
    TextStream.Close
    Set TextStream = logfile.OpenAsTextStream(8)
Else
    Set TextStream = objFSO.CreateTextFile(File)
    For i = 0 to oDrives.Count - 1 Step 2
        Paths = Paths & oDrives.Item(i+1) & vbCrLf
    Next
End If
If Not Paths = "" Then
    TextStream.WriteLine Paths
End If
TextStream.Close

Хотя тут для сравнения двух строк лучше будет использовать StrComp. Т.е. вместо строки

If Str = oDrives.Item(i+1) Then

написать

If StrComp(Str, oDrives.Item(i+1)) = 0 Then

3

Re: VBS: Добавление текста в файл без дублирования

не совсем поняла как адаптировать этот код под мои нужды но все ровно большое спасибо , буду пробовать.

4 (изменено: VSVLAD, 2011-06-17 13:00:56)

Re: VBS: Добавление текста в файл без дублирования

Option Explicit

Dim oFSO, oTS, sFileText
Dim sDataToAdd, sBuff

Const vbForReading = 1
Const vbForWriting = 2

sDataToAdd = "sssP10 2011/str" & vbCrLf & _
			 "sssP11 2011/str" & vbCrLf

If WScript.Arguments.Count = 0 Then
	MsgBox "Необходимо передать файл в параметре", vbExclamation
	WScript.Quit 1
End If

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTS = oFSO.OpenTextFile(WScript.Arguments(0), vbForReading)

sFileText = oTS.ReadAll
oTS.Close

If Len(sFileText) >= Len(sDataToAdd) Then
	sBuff = Right(sFileText, Len(sDataToAdd))
	If LCase(sBuff) = LCase(sDataToAdd) Then
		MsgBox "Данные уже были добавлены", vbInformation
		WScript.Quit 2
	End If
End If

sFileText = sFileText & sDataToAdd

Set oTS = oFSO.OpenTextFile(WScript.Arguments(0), vbForWriting)
oTS.Write(sFileText)
oTS.Close

Set oTS = Nothing
Set oFSO = Nothing

WScript.Quit 0

5

Re: VBS: Добавление текста в файл без дублирования

VSVLAD огромное при огромное спасибо
вы меня спасли !!!!

все работает еще раз спасибочки