Batch-Skript um Ordnernamen zu vergleichen und zu löschen (Teile des Namens)

M

MONGi

Gast
Hallo zusammen,

meine Batch-Kenntnisse reichen leider für mein Vorhaben nicht aus, daher müsste ich mich an Euch wenden in der Hoffnung weitere Anregungen oder u.U. sogar ein fertiges Skript zu erhalten.

Was habe ich vor:
Innerhalb von D:\Ordner\.. (siehe Kopien der Hauptordner) sind die Kopien enthalten, die durch verschiedene Partitionen bzw. Verzeichnisse (siehe Hauptordner) angelegt wurden.
Nun möchte ich, dass das Skript alle Namen der Hauptordner ausliest und mit den kopierten Hauptordner vergleicht.

Ist z.B. G:\Ordner1\Beispiel1\.. nicht mehr vorhanden (Hauptordner), soll D:\Ordner\4.Beispiel3.04.02.2014 gelöscht werden (Kopien der Hauptordner), u.s.w.

(Hauptordner)
E:\Ordner1\Beispiel1\..
F:\Ordner1\Beispiel1\..
F:\Ordner2\Beispiel2\..
G:\Ordner1\Beispiel1\..
G:\Ordner2\Beispiel2\..
...

(Kopien der Hauptordner)
D:\Ordner\1.Beispiel1.01.02.2014 (Kopie von "E:\Ordner1\Beispiel1\.."
D:\Ordner\2.Beispiel2.02.02.2014 (Kopie von "F:\Ordner1\Beispiel1\.."
D:\Ordner\3.Beispiel3.03.02.2014 (Kopie von "F:\Ordner2\Beispiel2\.."
D:\Ordner\4.Beispiel3.04.02.2014 (Kopie von "G:\Ordner1\Beispiel1\.."
D:\Ordner\5.Beispiel3.05.02.2014 (Kopie von "G:\Ordner2\Beispiel2\.."
...

Ich hoffe, die Zusammenfassung ist nicht zu wirre dargestellt.

Wäre die Umsetzung machbar? Wenn ja, wie?
Für jede Anregung bin ich sehr dankbar.

Grüße
 
Zuletzt bearbeitet von einem Moderator:
Bin jetzt kein Batch-Profi und habe mich nur in den letzten Tagen etwas damit auseinander gesetzt,

aber mit ner Schleife und ner Abfrage wie zb.

If (not) exist ORDNER (AKTION)

solltes du weiter kommen, bei Wikipedia findest du einige Codebeispiele die dir evtl. bei der Umsetzung helfen
 
Verderbaer schrieb:
Bin jetzt kein Batch-Profi und habe mich nur in den letzten Tagen etwas damit auseinander gesetzt,

aber mit ner Schleife und ner Abfrage wie zb.

If (not) exist ORDNER (AKTION)

solltes du weiter kommen, bei Wikipedia findest du einige Codebeispiele die dir evtl. bei der Umsetzung helfen

Hallo und Danke für deine Antwort,

denke so einfach ist das auch wieder nicht, zuerst müssten die Verzeichnisnamen in eine Variabel geschrieben werden, damit ein Vergleich stattfinden kann. Zum anderen sind die Namen ja nicht gleich, nur ein Teil.
Z.B.: Unter Eigene Dateien befindet sich ein Ordner Namens "Backup-Log-VPN", dieser wurde gesichert auf eine separate Partition unter dem Namen "1.Backup-Log-VPN_2014.02.05". Wird nun der Ordner "Backup-Log-VPN" gelöscht, wäre dieser ja noch unter der Sicherung "1.Backup-Log-VPN_2014.02.05" erhalten, der soll dann auch gelöscht werden.

Ein Skript habe ich im Internet gefunden, allerdings werden hier Dateien und keine Ordner verglichen, ebenso fehlt der Vergleich auf unterschiedliche Ordnernamen:

Code:
ECHO OFF
for /R C:\_TEST1\ %%I in (*.*) do (
for /R C:\_TEST2\ %%J in (*.*) do (
IF .%%~nI%%~xI.==.%%~nJ%%~xJ. (
ECHO %%J ist zweimal vorhanden!
DEL "%%J"
ECHO %%J geloescht.
)))

Wäre jemand hilfsbereit der mir das Skript anpassen könnte? :)
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

falls jemand eine ähnliche oder gar gleiche Anwendung benötigt, hier der funktionierende Code:
Code:
@ECHO OFF &SETLOCAL enableDelayedExpansion 
FOR /d %%a IN (C:\TEST\NV1\* C:\TEST\NV2\* C:\TEST\NV3\*) DO SET "$%%~na=%%~na" 
FOR /d %%a IN ("C:\TEST\HV\*") DO FOR /f "tokens=2delims=- " %%b IN ("%%~na") DO IF NOT DEFINED $%%b RD /s /q "%%~a"
 
Zurück
Oben