Visual Basic Script zum ändern einer Datei und alte Dateien Kopieren....
SQL Server 2000 DTS...
Hallo Leute,
ich habe ein DTS entwickelt (mit sehr viel mühe) und habe einen Punkt erreicht an dem ich wirklich nicht weiter weiß. Unsere Firma benutzt Noch immer den SQL Server 2000 und da kann man nur VBScript benutzen. Ersteinmal das Script:
Wie ihr selbst feststellen könnt ist dieser Code dazu erstellt worden um die Leere Zeilen zu löschen und die Zeilen die mit " DATETIME" beginnen... Leider passier nichts wenn ich es laufen lasse... Da habe ich mir gedacht dass etwas Falsch ist. Hat da irgendjemmand eine Iddee????
Set invfile = listdir.OpenTextFile((DTSGlobalVariables("temppath").Value), 1) ''''TEMPPATH = "C:\TEXT.TXT" DER GANZE PATH DER DATEI
Set newfile = listdir.CreateTextFile((DTSGlobalVariables("filename").Value)) '''FILENAME = '"TEXT.TXT" NUR DER NAME DER DATEI
Hier muss ich etwas anderes machen. Habe schon ein paar Sachen verändert zb.
Set newfile = listdir.CreateTextFile(("c:\new_text.txt"))
und bekomme die Nachricht dass dieser Path nicht existiert. Aber ich will keine neue Datei erstellen sondern die Datei die ich habe korigieren (Leere Zeilen löschen und die Datetime)... Irgendwie komme ich aber nicht weiter....
Dann zum letzten Schritt :
Das ganze funktioniert prima, aber wenn ich am gleichen Tag mehr als eine Datei bekomme (die haben immer den gleichen Namen) dann werden die die es schon in den Order Old_files gibt überschrieben... Das Problem ist aber dass jede Datei die ich erstelle diesen namen heben wird text_20090317.txt also wissen wir den Namen nicht im vorraus und können ihn nicht mit einem If vergleichen....
Vielen dank im vorraus für jede Hilfe.
Julia
Hallo Leute,
ich habe ein DTS entwickelt (mit sehr viel mühe) und habe einen Punkt erreicht an dem ich wirklich nicht weiter weiß. Unsere Firma benutzt Noch immer den SQL Server 2000 und da kann man nur VBScript benutzen. Ersteinmal das Script:
'**********************************************************************
' Visual Basic ActiveX Script
'************************************************************************
Function Main()
Dim str
Set listdir = CreateObject ("Scripting.FileSystemObject")
Set invfile = listdir.OpenTextFile((DTSGlobalVariables("temppath").Value), 1) ''''TEMPPATH = "C:\TEXT.TXT" DER GANZE PATH DER DATEI
Set newfile = listdir.CreateTextFile((DTSGlobalVariables("filename").Value)) '''FILENAME = '"TEXT.TXT" NUR DER NAME DER DATEI
while (invfile.AtEndOfStream = False)
ch = invfile.ReadLine '''read the first line
If ((left(ch,9))<>" DATETIME" and (left(ch,1))=" " ) AND ch <> "" Then
newfile.Write(ch) ''''If we dont do that then the first character wont be on the file
newfile.WriteLine
End If
wend
newfile.Close
invfile.Close
set invfile = nothing
set newfile = nothing
set listdir = nothing
Main = DTSTaskExecResult_Success
End Function
Wie ihr selbst feststellen könnt ist dieser Code dazu erstellt worden um die Leere Zeilen zu löschen und die Zeilen die mit " DATETIME" beginnen... Leider passier nichts wenn ich es laufen lasse... Da habe ich mir gedacht dass etwas Falsch ist. Hat da irgendjemmand eine Iddee????
Set invfile = listdir.OpenTextFile((DTSGlobalVariables("temppath").Value), 1) ''''TEMPPATH = "C:\TEXT.TXT" DER GANZE PATH DER DATEI
Set newfile = listdir.CreateTextFile((DTSGlobalVariables("filename").Value)) '''FILENAME = '"TEXT.TXT" NUR DER NAME DER DATEI
Hier muss ich etwas anderes machen. Habe schon ein paar Sachen verändert zb.
Set newfile = listdir.CreateTextFile(("c:\new_text.txt"))
und bekomme die Nachricht dass dieser Path nicht existiert. Aber ich will keine neue Datei erstellen sondern die Datei die ich habe korigieren (Leere Zeilen löschen und die Datetime)... Irgendwie komme ich aber nicht weiter....
Dann zum letzten Schritt :
'**********************************************************************
' Visual Basic ActiveX Script
'************************************************************************
Function Main()
Dim dt
Dim yyyy
Dim mm
Dim dd
dt = Date
yyyy = DatePart( "yyyy", dt)
mm = DatePart( "m", dt)
dd = DatePart( "d", dt)
If len(mm) = 1Then mm = "0" & mm End If
If len(dd) = 1Then dd = "0" & dd End If
dt= yyyy&mm&dd
Set listdir = CreateObject("Scripting.FileSystemObject")
listdir.copyFile DTSGlobalVariables("temppath").Value, DTSGlobalVariables("finalpath").Value + "inv_" + left(DTSGlobalVariables("filename").Value, len(DTSGlobalVariables("filename").Value)-4) + "_" + dt + ".txt"
'''''''TEMPPATH = "C:\TEXT.TXT" , 'FILENAME = '"TEXT.TXT", FINALPATH = "C:\OLD_FILES\"
listdir.deleteFile DTSGlobalVariables("temppath").Value
Main = DTSTaskExecResult_Success
End Function
------------------------------------------
Das ganze funktioniert prima, aber wenn ich am gleichen Tag mehr als eine Datei bekomme (die haben immer den gleichen Namen) dann werden die die es schon in den Order Old_files gibt überschrieben... Das Problem ist aber dass jede Datei die ich erstelle diesen namen heben wird text_20090317.txt also wissen wir den Namen nicht im vorraus und können ihn nicht mit einem If vergleichen....
Vielen dank im vorraus für jede Hilfe.
Julia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111609
Url: https://administrator.de/forum/visual-basic-script-zum-aendern-einer-datei-und-alte-dateien-kopieren-111609.html
Ausgedruckt am: 26.12.2024 um 00:12 Uhr