Ich hatte vor einiger Zeit ein ähnliches Problem bei dem ein Arbeitskollege einen Festplattenausfall hatte und das letzte Backup, trotz meiner ständigten Predigten, schon einige Zeit zurücklag.
Damals musste ich relativ rasch eine Möglichkeit finden, eine größere Anzahl an Dateien zu vergleichen. Ich habe deswegen ein vb script geschrieben, welches die Dateien in zwei (oder potentiell mehr) Ordnern und deren Unterordnern vergleicht.
Es werden zwar keine Dateien synchronisiert (so leicht wollte ich es dem Kollegen dann auch nicht machen) aber zumindest solltest du so eine Übersicht darüber bekommen, welche Dateien wo liegen.
Um das Script auszuführen musst du den Text im Codefenster unten in eine Textdatei kopieren, die Dateiendung in .vbs ändern und die folgenden Parameter ganz am Anfang der Datei Pflegen:
- Erster_Ordner - Erster Ordner dessen Dateien verglichen werden sollen
- Zweiter_Ordner - Zweiter Ordner dessen Dateien verglichen werden sollen
- Ergebnis_Ordner - Ordner, in dem die Ergebnisdatei erstellt werden soll
- Filesize_Vergleichen - Wenn True, dann wird zusätzlich zum Dateinamen auch die Dateigröße verglichen, bei False nur der jeweilige Dateiname
- Nur_Doppelte_Ergebnisse - Wenn True, dann werden in der Ergebnisdatei nur Dateinamen ausgegeben, die in mehreren Ordnern gefunden wurden, bei False werden alle Dateien ausgegeben.
Als Ergebnis wird im angegebenen Verzeichnis eine Textdatei erstellt in der du pro Zeile den Dateinamen, optional die Dateigröße und danach die Verzeichnisse, in denen die Datei gefunden wurde, findest.
Code:
Erster_Ordner = "C:\Ordner1"
Zweiter_Ordner = "C:\Ordner2"
Ergebnis_Ordner = "C:\"
Filesize_Vergleichen = True
Nur_Doppelte_Ergebnisse = False
set fs = CreateObject("Scripting.FileSystemObject")
set resultdic = CreateObject("Scripting.Dictionary")
if right(Ergebnis_Ordner,1) <> "\" then Ergebnis_Ordner = Ergebnis_Ordner & "\"
if fs.FolderExists(Erster_Ordner) then
set foldera = fs.GetFolder(Erster_Ordner)
else
msgbox "Ordner " & Erster_Ordner & " nicht gefunden, bitte Pfad überprüfen.", vbcritical
end if
if fs.FolderExists(Zweiter_Ordner) then
set folderb = fs.GetFolder(Zweiter_Ordner)
else
msgbox "Ordner " & Zweiter_Ordner & " nicht gefunden, bitte Pfad überprüfen.", vbcritical
end if
if fs.FolderExists(Ergebnis_Ordner) then
Set resulttxt = fs.CreateTextFile(Ergebnis_Ordner & "result.txt", True, True)
else
msgbox "Ordner " & Ergebnis_Ordner & " nicht gefunden, bitte Pfad überprüfen.", vbcritical
end if
GetFiles(foldera)
GetFiles(folderb)
resultar = resultdic.Keys
if Nur_Doppelte_Ergebnisse = False then
for i = 0 to resultdic.Count -1
resulttxt.Writeline resultar(i) & vbTab & resultdic.item(resultar(i))
next
else
for i = 0 to resultdic.Count -1
if instr(resultdic.item(resultar(i)), vbTab) then
resulttxt.Writeline resultar(i) & vbTab & resultdic.item(resultar(i))
end if
next
end if
resulttxt.Close
Wscript.Quit
sub GetFiles(folder)
for each subfolder in folder.subfolders
set currentfolder = fs.GetFolder(subfolder.path)
set folderfiles = currentfolder.files
for each ofile in folderfiles
if Filesize_Vergleichen = True then
fileid = ofile.Name & vbTab & ofile.Size
else
fileid = ofile.Name
end if
filepath = ofile.Path
if resultdic.exists(fileid) then
resultdic.item(fileid) = resultdic.item(fileid) & vbTab & filepath
else
resultdic.add fileid, filepath
end if
' resulttxt.writeline ofile.Name & "|" & ofile.Size & "|" &ofile.Path
next
GetFiles(subfolder)
next
end sub
Ich
hoffe, dass das script bei dir richtig läuft, ursprünglich war es ein Stück umfangreicher, ich habe jetzt aber nur den Teil rauskopiert, der für dich relevant ist.