Hallo,
bei uns wurden vor ca. einem Monat durch einen Virus Dateien verschlüsselt und umbenannt. Die Ursache ist bereits bereinigt. Da aber auf einem System, auf dem Daten ausgelagert sind, erst diese Woche entdeckt wurde, dass auch hier ca. 1700 Dateien betroffen sind, haben wir dort natürlich die verschlüsselten Dateien mit gesichert. Eine Rücksicherung ist zwar möglich, allerdings nicht ganz so einfach. Auf dem Backup werden die ursprünglichen Dateien, welche umbenannt wurden, nicht automatisch gelöscht, so dass diese zumindest aus dem Backup wiederhergestellt werden konnten. Allerdings sind in den Verzeichnissen jetzt jeweils die Originaldatei und die verschüsselte Kopie vorhanden. Der betroffene Verzeichnisbaum umfasst ca. 40 GB an Daten. Die Kopien wollen wir nun mit einem Script verschieben und dann nach Prüfung löschen.
Nun das Problem im Script. Es sollen im Script rekursiv alle Verzeichnisse durchsucht werden. Leider läuft es nur 4 Ordner im Basefolder durch (die Unterverzeichnisse werden dabei alle anscheinend durchgelaufen).
Hat jemand eine Idee, woran dies liegen könnte?
Hinweis: Ich bin kein Programmierer und baue Scripte idR. aus Codeschnippseln zusammen. Somit bitte Verständnis, dass das Progrämmchen nicht "professionell" ist. Besser geht sicher immer.
Der Anspruch ist ... Es muss halt funktionieren und ich will es verstehen.
bei uns wurden vor ca. einem Monat durch einen Virus Dateien verschlüsselt und umbenannt. Die Ursache ist bereits bereinigt. Da aber auf einem System, auf dem Daten ausgelagert sind, erst diese Woche entdeckt wurde, dass auch hier ca. 1700 Dateien betroffen sind, haben wir dort natürlich die verschlüsselten Dateien mit gesichert. Eine Rücksicherung ist zwar möglich, allerdings nicht ganz so einfach. Auf dem Backup werden die ursprünglichen Dateien, welche umbenannt wurden, nicht automatisch gelöscht, so dass diese zumindest aus dem Backup wiederhergestellt werden konnten. Allerdings sind in den Verzeichnissen jetzt jeweils die Originaldatei und die verschüsselte Kopie vorhanden. Der betroffene Verzeichnisbaum umfasst ca. 40 GB an Daten. Die Kopien wollen wir nun mit einem Script verschieben und dann nach Prüfung löschen.
Nun das Problem im Script. Es sollen im Script rekursiv alle Verzeichnisse durchsucht werden. Leider läuft es nur 4 Ordner im Basefolder durch (die Unterverzeichnisse werden dabei alle anscheinend durchgelaufen).
Hat jemand eine Idee, woran dies liegen könnte?
Hinweis: Ich bin kein Programmierer und baue Scripte idR. aus Codeschnippseln zusammen. Somit bitte Verständnis, dass das Progrämmchen nicht "professionell" ist. Besser geht sicher immer.
Der Anspruch ist ... Es muss halt funktionieren und ich will es verstehen.
Visual Basic:
Basefolder = "X:\TechDoku\Standort1\"
Basefolder1 = left(Basefolder, len(Basefolder) - 1)
Basefolder1 = right(Basefolder1, len(Basefolder1) - inStrRev(Basefolder1,"\"))
Savefolder = "X:\Save\"
Logfile = "C:\Temp\DMS_Script\Logfile_" & Basefolder1 & ".txt"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set MyLogfile = oFSO.CreateTextFile(Logfile, true)
MyLogfile.Close
Set MyLogfile = oFSO.OpenTextFile(Logfile, 8)
sub ExecuteFolder (Foldername)
Dim oFolder1
Dim oFile, oFile2, oFile2_Path
Dim SubFolder
set oFolder1 = oFSO.GetFolder (Foldername)
MyLogfile.WriteLine (oFolder1)
For Each oFile In oFolder1.Files
' Msgbox "Orig: " & oFile.name
oFile2 = left(oFile, inStrRev(oFile,".")-1)
if oFile2 <> "" then
If (oFSO.FileExists(oFile2)) Then
MyLogfile.WriteLine (oFile)
oFile2_Path = left(oFile, inStrRev(oFile,"\"))
oFile2_Path = Savefolder & right(oFile2_Path, len(oFile2_Path) - inStr(oFile2_Path,"\"))
oFile2_Fullname = oFile2_Path & oFile.name
' msgbox "Orig: " & oFile.name & " - " & "Kopie: " & oFile2 & " - " & oFile2_Fullname
Set objShell = CreateObject("WScript.Shell")
if oFSO.Folderexists(oFile2_Path) = false then
' msgbox "Erstelle """ & oFile2_Path & """"
objShell.run "cmd.exe /C mkdir """ & oFile2_Path & """",,true
if oFSO.Folderexists(oFile2_Path) = true then
MyLogfile.WriteLine (" Sicherungsordner erstellt")
else
MyLogfile.WriteLine (" Fehler beim Erstellen von " & oFile2_Path)
end if
end if
Befehl = "cmd.exe /C move """ & oFile & """ """ & oFile2_Fullname & """"
' msgbox Befehl
objShell.run Befehl,,true
If (oFSO.FileExists(oFile2_Fullname)) Then
MyLogfile.WriteLine (" verschoben")
else
MyLogfile.WriteLine (" Fehler beim Verschieben nach " & oFile2_Fullname)
end if
Set objShell = nothing
end if
end if
Next
For Each SubFolder in oFolder1.SubFolders
ExecuteFolder SubFolder.Path
Next
set oFolder1 = nothing
end sub
ExecuteFolder (Basefolder)
MyLogfile.Close
Set oFSO = nothing
msgbox "Fertig"