Verzeichnisabgleich
Ein fotografierender Kollege bat mich, ihm eine Lösung zu schreiben, mit der er Verzeichnisse abgleichen kann.
Hintergrund:
Die Bilder kommen quasi im Doppelpack auf seine Platte. Einmal als JPG-File (platzsparend) und zum anderen als RAW-Datei, die enorm viel Platz braucht.
Die Namen der Dateien sinid identisch, nur der Suffix ist unterschiedlich.
Für jeden Tag, an dem er fotografiert, wird von ein Ordner angelegt, der zwei Unterordner JPG und NEF beinhaltet.
Die JPG-Bilder werden von ihm begutachtet und gelöscht, falls er sie nicht gut findet. Damit hat er aber noch die NEF-Dateien auf der Platte.
Und die sollen vom Script gelöscht werden.
Mein Script liest also den NEF-Ordner aus und durchsucht dann den JPG-Ordner nach den zugehörigen JPG's.
Sind die nicht vorhanden, wird auch das verwaiste NEF-File gelöscht.
option explicit
on error resume next
dim destpath, jpgpath, nefpath
dim FSO, wshell, fa,f,i, filename
set FSO = CreateObject("Scripting.FileSystemObject")
set wshell = CreateObject("WScript.Shell")
fa = Array("jpg","nef")
folderauswahl
if fso.FolderExists (destpath & "\" & fa(0)) then set jpgpath = fso.getfolder(destpath & "\" & fa(0)) else wscript.echo "FEHLER - " & fa(0)&" -Ordner nicht vorhanden!!!" & wscript.quit
if fso.FolderExists (destpath & "\" & fa(1)) then set nefpath = fso.getfolder(destpath & "\" & fa(1)) else wscript.echo "FEHLER - " & fa(1)&" -Ordner nicht vorhanden!!!" & wscript.quit
abgleich_lesen
Sub FolderAuswahl
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Const OverWriteFiles = True
dim objShell : Set objShell = CreateObject("Shell.Application")
dim objFolder : Set objFolder = objShell.BrowseForFolder (WINDOW_HANDLE, "Foto-Ordner auswählen:", NO_OPTIONS, "C:\ ")
dim objFolderItem : Set objFolderItem = objFolder.Self
destPath = objFolderItem.Path
End Sub
sub abgleich_lesen
for each i in nefpath.files
filename = fso.getbasename(i)
if not fso.FileExists(jpgpath & "\" & filename &".jpg") then
fso.DeleteFile nefpath & "\" & filename & ".nef"
end if
next
end sub