Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Dateien in verschiedenen Verzeichnissen löschen, nachdem im Originalverzeichnis diese entfernt wurden

Mitglied: mag-lion

mag-lion (Level 1) - Jetzt verbinden

15.02.2013 um 21:44 Uhr, 1855 Aufrufe, 6 Kommentare

Guten Abend zusammen,

ich benötige einen Denkanstoß bzw. eine Idee, wie ich folgendes Problem lösen kann.

Es wird langsam Zeit, mal wieder das Fotoverzeichnis aufzuräumen. Bisher habe ich das manuell erledigt. Nun soll mir ein kleines Script dabei helfen. Folgende Struktur liegt vor:
\Fotos
\Fotos\originale
\Fotos\bmp
\Fotos\jpg
\Fotos\tiff
... usw.

Alle Fotos kommen ins Unterverzeichnis \originale. Von Zeit zu Zeit bearbeite ich diese mit diversen Programmen. Diese bearbeiteten Fotos werden dann, je nach Programm / Endung in andere Unterverzeichnisse gespeichert. Es kann also z. B. unter \originale\geb_micha_01.jpg liegen und unter \bmp\geb_micha_01.bmp, unter \jpg\geb_micha_01.jpg usw.
D.h. es gibt in den verschiedenen Unterverzeichnissen gleichnamige Dateien mit verschiedenen Endungen.
Die Dateien unter \originale werden regelmäßig gesichert und nach einer bestimmten Zeit gelöscht.

Nun möchte ich ein Script erstellen, dass in allen anderen Unterverzeichnissen die Dateien löscht, die unter \originale nach der Sicherung gelöscht wurden.

Ich hoffe, ich habe mich nicht zu umständlich ausgedrückt.


Grüße
mag-lion

Mitglied: bastla
16.02.2013 um 00:24 Uhr
Hallo mag-lion!

Sollte (ungetestet) etwa so zu machen sein:
01.
@echo off & setlocal 
02.
set "Basis=D:\Fotos" 
03.
 
04.
for %%i in (bmp jpg tiff) do for %%a in ("%Basis%\*.%%i") do if not exist "%Basis%\originale\%%~na.jpg" echo del "%%a" 
05.
pause
Wegen des "echo" vor dem "del" wird (zum Testen) das Löschen durch Ausgabe des Löschbefehls nur simuliert - wenn Du das "echo" entfernst, wird tatsächlich gelöscht.

Grüße
bastla
Bitte warten ..
Mitglied: mag-lion
16.02.2013 um 14:38 Uhr
Hallo bastla,


man möchte einen Denkanstoß - und bastla schüttelt die Lösung in nullkommanix aus dem Ärmel - wie immer
Vielen Dank dafür.

Ok, eine kleine Einsetzung habe ich noch vorgenommen: in Zeile 4 fehlte einmal %%i

01.
@echo off & setlocal  
02.
set "Basis=D:\Fotos"  
03.
 
04.
for %%i in (bmp jpg tiff) do for %%a in ("%Basis%\%%i\*.%%i") do if not exist "%Basis%\originale\%%~na.jpg" echo del "%%a"
Eine Frage habe ich zu dem "%~na" - ich kenne bei denen, die mit "n" anfangen: "%~n0", "%~nx0" und "%~npx0", aber wofür steht das "a"?

Und noch eine Frage. Leider gibt es für das "...usw." von oben noch eine Fortsetzung mit anderen Unterverzeichnissen: "\web", "\ausgedruckt" etc.
Wir kann ich diese "einschleifen"?

Meine erste Überlegung war, alle Dateinamen aus \originale ohne Endung "%~n0" in eine temporäre Datei zu speichern und diese dann mit einer Schleife über die anderen Unterverzeichnisse laufen zu lassen, wobei alle Dateien, welche nicht darin stehen aus diesen Unterverzeichnissen gelöscht werden.

Hm... was ist schneller / effektiver / besser?


Grüße
mag-lion
Bitte warten ..
Mitglied: bastla
16.02.2013 um 19:33 Uhr
Hallo mag-lion!
Eine Frage habe ich zu dem "%~na" - ich kenne bei denen, die mit "n" anfangen: "%~n0", "%~nx0" und "%~npx0", aber wofür steht das "a"?
Das ist die Schleifenvariable - "%~n0" bezieht sich auf die Batchdatei oder als "%~n1" auf den ersten Aufrufparameter ...
Um weitere Unterordner einzubeziehen ließe sich natürlich auch eine Schleife für alle Unterordner von "%Basis%" verwenden, wobei der Ordner "originale" übersprungen werden müsste, also etwa:
for /d %%i in ("%Basis%\*") do if /i "%%~nxi" neq "originale" for %%a in ("%%i\*.*") do if not exist "%Basis%\originale\%%~na.jpg" echo del "%%a"
- Nachteil hier: Es kann nicht mehr auf den Dateityp geprüft werden (da dieser nicht mit dem Ordnernamen übereinstimmt, sondern zB in "web" vermutlich "jpg" sein wird), sondern es werden alle Dateien im jeweiligen Unterordner verarbeitet - wenn sich nur Bilder darin befinden, wäre das aber kein Problem.
Meine erste Überlegung war, alle Dateinamen aus \originale ohne Endung "%~n0" in eine temporäre Datei zu speichern und diese dann mit einer Schleife über die anderen Unterverzeichnisse laufen zu lassen, wobei alle Dateien, welche nicht darin stehen aus diesen Unterverzeichnissen gelöscht werden.
Ginge natürlich auch - Du müsstest aber weiterhin für jede einzelne Datei den Namen ohne Typ bestimmen und dann zusätzlich per "findstr" prüfen, ob dieser Name in der Liste enthalten ist - schneller dürfte das (durch den jeweils erforderlichen Aufruf der "findstr.exe") im Vergleich zum internen "if exist" eher nicht sein ...

BTW: Wie bereits oben erwähnt, würde "%~n0" den Namen der Batch-Datei selbst liefern.

Grüße
bastla
Bitte warten ..
Mitglied: mag-lion
16.02.2013 um 21:05 Uhr
Hallo bastla,

ja, das ist es
Vielen vielen Dank.
Würde sagen, besser als der erste Versuch. Denn hier kann ich beliebige Verzeichnisse erstellen, ohne auf die entsprechenden Endungen zu achten.
Dabei fällt mir wieder ein - wenn ich nicht nur \originale "ausklammern" möchte (neq "originale"), sondern noch ein zwei Verzeichnisse mehr... kann ich diese Abfrage mit einem "oder" verbinden?


Grüße
mag-lion
Bitte warten ..
Mitglied: bastla
16.02.2013 um 21:12 Uhr
Hallo mag-lion!

Dann würde ich etwa so vorgehen:
for /d %%i in ("%Basis%\*") do echo #originale#das nicht#das auch nicht#|findstr /ic:"#%%~nxi#">nul || for %%a in ("%%i\*.*") do if not exist "%Basis%\originale\%%~na.jpg" echo del "%%a"
Das als Begrenzungszeichen verwendete "#" sollte nicht in den Ordnernamen enthalten sein und kann ggf auch durch zB "§" oder andere Sonderzeichen, die in Batch keine besondere Bedeutung haben, ersetzt werden.

Das "findstr" nur einmal je Ordner aufgerufen werden muss, sollte die Performance auch nicht wirklich leiden.

Grüße
bastla
Bitte warten ..
Mitglied: mag-lion
16.02.2013 um 21:52 Uhr
Hallo bastla,

wieder mal schnell und perfekt.
Wie ordentlich doch jetzt meine Verzeichnisse sind.
Nochmals vielen vielen Dank.


Grüße
mag-lion
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Inhalt verschiedener Verzeichnisse auf min-max Dateien überwachen bzw. löschen

gelöst Frage von BlattlausOGBatch & Shell2 Kommentare

Guten Abend, ich müsste nochmals eure Hilfe aufsuchen um mein Vorhaben umsetzten zu können. Funktionalität: Das Script soll alle ...

Windows Server

Verzeichnisse löschen

Frage von MiStWindows Server2 Kommentare

Hallo, ich habe folgendes Problem. von einem Client habe ich auf einem Netzpfad (Netzwerkfreigabe) ein Verzeichnis angelegt. Wenn ich ...

Batch & Shell

Robocopy, löschen Verzeichnisse

Frage von DanielBodenseeBatch & Shell1 Kommentar

Hallo zusammen, ich gehe davon aus das Robocopy keine Verzeichnisse auf dem Ziel löschen kann bei dem er auf ...

Batch & Shell

Batch zum durchsuchen eines Verzeichnisses inkl. löschen

gelöst Frage von zeroblue2005Batch & Shell4 Kommentare

Hallo Zusammen, ich weiß garnicht, ob man das was ich vorhabe überhaupt so lösen kann aber ich lege einfach ...

Neue Wissensbeiträge
Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 6 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 19 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 21 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 21 StundenMicrosoft13 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server34 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...