VBScript - bei Sync/Backup Werte in Txt-Datei schreiben

  • VBScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von kwon.

    VBScript - bei Sync/Backup Werte in Txt-Datei schreiben

    Hallo,
    ich komme, auch nach stundenlangem Suchen, in meinem Code nicht mehr weiter und bitte um Hilfe...

    Zum Herunterfahren des PCs nutze ich ein selbstgeschriebenes VBSkript, das ich etwas erweitert habe.

    Zuerst wird eine Synchronisation mit dem USBStick ausgeführt (hier gibt es die Wahlmöglichkeit ja/nein). Dann wird ein Backup meines PCs auf ext. Festplatten ausgeführt (wenn das letzte Backup mindestens 7 Tage her ist).

    Zur Verwaltung der Synchronisation und des Backups nutze ich eine Txt-Datei "Zeitstempel.txt" und eine Txt-Datei "ZeitstempelTemp.txt".
    In "Zeitstempel.txt" ist das Medium aufgelistet ("PC", "USBStick", "ext FP" ) und wann die letzte Synchronisation / das letzte Backup ausgeführt wurde.
    Zum Einlesen der Werte wird "Zeitstempel.txt" geöffnet, die neuen Werte werden in "ZeitstempelTemp.txt" geschrieben. Dann wird "Zeitstempel.txt" gelöscht und "ZeitstempelTemp.txt" wird in "Zeitstempel.txt" umbenannt.
    Die eigentlichen Sync-Vorgänge/Backup funktionieren und ich habe sie auskommentiert um besser testen zu können.

    Zum Fehler:
    Die Datei "Zeitstempel.txt" ist am Ende leer wenn ich bei der Sync-Abfrage "ja" wähle.
    Wenn ich "nein" wähle dann ist sie gefüllt.

    Ich bitte um Hilfe, da ich alleine nicht mehr weiterkomme...

    Viele Grüße,
    kwon

    Quellcode

    1. ​on Error resume Next
    2. Dim f,tempf,fso,wss,pfad1, pfad2, letztdat, sText, datdiff, i, u
    3. Set fso = CreateObject("Scripting.FileSystemObject")
    4. Set wss = CreateObject("Wscript.Shell")
    5. pfad1 ="F:\Zeitstempel\Zeitstempel.txt"
    6. pfad2 ="F:\Zeitstempel\ZeitstempelTemp.txt"
    7. Set f = fso.OpenTextFile(pfad1, 1, True)
    8. Set tempf = fso.OpenTextFile(pfad2, 2, True)
    9. zeitstempel=Date & "__" & Time
    10. antw=MsgBox("Sync durchführen? Ja --> USBStick einstecken.", vbyesno)
    11. Select Case antw
    12.     Case vbYes
    13.         Do until fso.DriveExists("F:\")
    14.         Loop
    15.         If fso.FileExists("F:\Sync_ausfuehren.txt") Then
    16.             'Zeitstempel aktualisieren
    17.             Do While f.AtEndOfStream <> True 
    18.                 sText=f.ReadLine()
    19.                 'eintragen dass PC Sync durchführen wird
    20.                 If sText= "&" Then 
    21.                     tempf.WriteLine "%"
    22.                 elseif InStr(sText, "PC") Then
    23.                     tempf.WriteLine "PC________" & zeitstempel
    24.                 ElseIf InStr(sText, "USBStick") Then
    25.                     tempf.WriteLine "USBStick__" & zeitstempel
    26.                 Else
    27.                     tempf.WriteLine sText    
    28.                 End if    
    29.             Loop
    30.             f.Close
    31.             tempf.Close                
    32.             fso.DeleteFile(pfad1)
    33.             fso.MoveFile pfad2, pfad1 
    34.             If fso.FileExists(pfad1) Then wss.Popup "Zeitstempel erzeugt.", 1
    35.             Set f = fso.OpenTextFile(pfad1, 1, True)
    36.             Set tempf = fso.OpenTextFile(pfad2, 2, True)
    37.             
    38.                 'Sync PC<-->USB (Ordner X)
    39. '               wss.Run "D:\Daten\aufbewahren\PC\FreeFileSync\Sync\runbat_Ordner_X-PC_USBStick_beide_Richtungen.bat"
    40. '               MsgBox("Wenn Sync-Fenster geschlossen dann OK klicken.")
    41.         End If
    42.     Case vbno
    43. End Select
    44. Do While f.AtEndOfStream <> True 
    45.     sText=f.ReadLine()
    46.     If InStr(sText, "extFP") Then
    47.         letztdat=mid(sText,11,10)
    48.         datdiff=datediff("d",letztdat,Date)
    49.         'Überprüfung ob Backup D:\Daten auf ext. FP ausgeführt werden soll
    50.         If datdiff >=7 Then
    51.             tempf.WriteLine "extFP_____" & zeitstempel
    52.         Else
    53.             tempf.WriteLine sText    
    54.         End if    
    55.             'For u=1 to 2
    56.                 'USB-Laufwerk finden
    57. '               wss.Popup "Popup: externe Festplatte einschalten.", 5
    58. '               Do Until fso.DriveExists("G:") 
    59. '               Loop
    60. '               wss.Popup "Popup: USB-Festplatte gefunden.", 5
    61.                 'Backup durchführen
    62. '               wss.run "D:\Daten\aufbewahren\PC\FreeFileSync\Sync\runbat_Backup_PC_Daten_auf_ext_FP.bat"
    63. '               MsgBox("Zum Auswerfen der ext. Festplatte OK klicken.")
    64.                 'Festplatten per Skript auswerfen
    65. '               Do Until Not fso.DriveExists("G:") Or i=10
    66. '                   wss.Run "D:\Daten\aufbewahren\PC\FreeFileSync\Sync\FP_per_skript_auswerfen\runbat_FP_per_skript_auswerfenG.bat" 
    67. '                   i=i+1
    68. '                   WScript.Sleep(5000)
    69. '               Loop
    70. '               msgbox("Wenn ext. Festplatte ausgeschaltet OK klicken.")
    71. '           Next  
    72.     End If
    73. Loop
    74. f.Close
    75. tempf.Close
    76. Set f = fso.OpenTextFile(pfad1, 1, True)
    77. Set tempf = fso.OpenTextFile(pfad2, 2, True)
    78. f.Close
    79. tempf.Close                
    80. fso.DeleteFile(pfad1)
    81. fso.MoveFile pfad2, pfad1 
    82. If fso.FileExists(pfad1) Then wss.Popup "Zeitstempel erzeugt.", 1            
    83. Set fso=Nothing
    84. 'wss.Run "C:\Windows\System32\shutdown.exe /s /f /t 0"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kwon“ ()

    Hallo, habe Lösung selbst gefunden!!

    Quellcode

    1. ​on Error resume Next
    2. Dim f,tempf,fso,wss,pfad1, pfad2, letztdat, sText, datdiff, i, u
    3. Set fso = CreateObject("Scripting.FileSystemObject")
    4. Set wss = CreateObject("Wscript.Shell")
    5. pfad1 ="F:\Zeitstempel\Zeitstempel.txt"
    6. pfad2 ="F:\Zeitstempel\ZeitstempelTemp.txt"
    7. zeitstempel=Date & "__" & Time
    8. antw=MsgBox("Sync durchführen? Ja --> USBStick einstecken.", vbyesno)
    9. Select Case antw
    10.     Case vbYes
    11.         Do until fso.DriveExists("F:\")
    12.         Loop
    13.         If fso.FileExists("F:\Sync_ausfuehren.txt") Then
    14.         Set f = fso.OpenTextFile(pfad1, 1, True)
    15.         Set tempf = fso.OpenTextFile(pfad2, 2, True)
    16.             'Zeitstempel aktualisieren
    17.             Do While f.AtEndOfStream <> True 
    18.                 sText=f.ReadLine()
    19.                 if InStr(sText, "PC") Then
    20.                     tempf.WriteLine "PC________" & zeitstempel
    21.                 ElseIf InStr(sText, "USBStick") Then
    22.                     tempf.WriteLine "USBStick__" & zeitstempel
    23.                 Else
    24.                     tempf.WriteLine sText    
    25.                 End if    
    26.             Loop
    27.             f.Close
    28.             tempf.Close                
    29.             fso.DeleteFile(pfad1)
    30.             fso.MoveFile pfad2, pfad1 
    31.             If fso.FileExists(pfad1) Then wss.Popup "Zeitstempel erzeugt.", 1
    32.                 'Sync PC<-->USB (Ordner X)
    33. '               wss.Run "D:\Daten\aufbewahren\PC\FreeFileSync\Sync\runbat_Ordner_X-PC_USBStick_beide_Richtungen.bat"
    34. '               MsgBox("Wenn Sync-Fenster geschlossen dann OK klicken.")
    35.         End If
    36.     Case vbno
    37. End Select
    38. Set f = fso.OpenTextFile(pfad1, 1, True)
    39. Set tempf = fso.OpenTextFile(pfad2, 2, True)
    40. Do While f.AtEndOfStream <> True 
    41.     sText=f.ReadLine()
    42.     If InStr(sText, "extFP") Then
    43.         letztdat=mid(sText,11,10)
    44.         datdiff=datediff("d",letztdat,Date)
    45.         'Überprüfung ob Backup D:\Daten auf ext. FP ausgeführt werden soll
    46.         If datdiff >=7 Then
    47.         tempf.WriteLine "extFP_____" & zeitstempel
    48.         'For u=1 to 2
    49.                 'USB-Laufwerk finden
    50. '               wss.Popup "Popup: externe Festplatte einschalten.", 5
    51. '               Do Until fso.DriveExists("G:") 
    52. '               Loop
    53. '               wss.Popup "Popup: USB-Festplatte gefunden.", 5
    54.                 'Backup durchführen
    55. '               wss.run "D:\Daten\aufbewahren\PC\FreeFileSync\Sync\runbat_Backup_PC_Daten_auf_ext_FP.bat"
    56. '               MsgBox("Zum Auswerfen der ext. Festplatte OK klicken.")
    57.                 'Festplatten per Skript auswerfen
    58. '               Do Until Not fso.DriveExists("G:") Or i=10
    59. '                   wss.Run "D:\Daten\aufbewahren\PC\FreeFileSync\Sync\FP_per_skript_auswerfen\runbat_FP_per_skript_auswerfenG.bat" 
    60. '                   i=i+1
    61. '                   WScript.Sleep(5000)
    62. '               Loop
    63. '               msgbox("Wenn ext. Festplatte ausgeschaltet OK klicken.")
    64. '           Next
    65.         Else
    66.             tempf.WriteLine sText
    67.         End if
    68.     Else
    69.         tempf.WriteLine sText
    70.     End If    
    71. Loop
    72. f.Close
    73. tempf.Close
    74. If datdiff>=7 Then
    75.     fso.DeleteFile(pfad1)
    76.     fso.MoveFile pfad2, pfad1 
    77.     If fso.FileExists(pfad1) Then wss.Popup "Zeitstempel erzeugt.", 1
    78. End if
    79.             
    80. Set fso=Nothing
    81. 'wss.Run "C:\Windows\System32\shutdown.exe /s /f /t 0"