1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Batch - Umbenennen/Verschieben/Löschen

Discussion in 'Programmieren' started by ggk_alex, Dec 7, 2012.

Thread Status:
Not open for further replies.
  1. ggk_alex

    ggk_alex ROM

    Hallo zusammen,

    ich bin auf der Suche nach jemanden, der mir mit der Programmierung einer Batchdatei helfen kann.
    Ich hab folgende Anwendung.

    In einem Ordner, in welchen dann auch die Batchdatei liegt, befinden sich weitere Ordner. Die Ordner haben die Bezeichnungen XY.A1Bx.Test.y.ZZZ.asdf...
    Der Teil(Name) XY ist bei jedem Ordner gleich, und sollte frei definierbar sein.
    A1Bx ändert sich jeweils um die letzte Ziffer.
    Der Teil ZZZ ist bei jedem Ordner Gleich, und dient als Trennstelle für den Dateinamen, soll aber nicht enthalten sein. Auch diese Trennstelle bzw. Merkmal muss frei definierbar sein.
    Der Teil asdf... ist bei jedem Ordner unterschiedlich, und irrelevant.
    In dem jeweiligen Ordner liegen verschiedene Dateien, und eine *.AVI, dessen Name irrelevant ist.

    Jetzt brauch ich eine Batch-Datei, die den Teil XY.A1Bx.Test.y des Ordnernamens kopiert, und die *.AVI-Datei im jeweiligen Ordner danach benennt.
    Diese XYZ.A1Bx.AVI soll anschließend in den Hauptordner, wo auch die Batch-Datei liegt, verschoben werden. Der nun nicht mehr benötigte Ordner XY.A1Bx.Test.y.asdf... kann abschließend noch gelöscht werden.
    Dieser Vorgang soll solange wiederholt werden, bis kein Ordner der Bezeichnung XYZ.A1Bx.asdf... vorhanden ist.
    Eine Zusammenfassung der Vorgänge am Bildschirm am Ende währe Wünschenswert.

    Ich währe sehr dankbar, wenn mir jemand dabei helfen könnte.
    Viele Grüße
    Alex
     

    Attached Files:

  2. Hallo

    Unten mal ein Batch wie das funktionieren müßte.
    Die _tempx_ Dateien dienen der Kontrolle.
    Ansonsten sind im Batch Anmerkungen als Hilfe.
    Am besten sollte man den Batch erst mal mit wenigen Ordner testen.


    Code:
    
    @echo off
    
    set praef=XY*.* 
    
    :: Variable = Unterverzeichnisse in einer Textdatei gespeichert 
    :: ( Beispiel: XY.A1B1.Test.1.ZZZblablabla usw. )
    set vzs=_tempx_Verzeichnisse.txt
    
    :: Variable = Neue Name der Videos in einer Textdatei gespeichert 
    :: ( Beispiel: XY.A1B1.Test.1 usw. )
    set neudatna=_tempx_NeuVideoName.txt
    
    :: Variable = Verzeichnispfade und die alten Namen der Videos 
    :: werden in einer Textdatei gespeichert
    :: ( Beispiel: D:\Hauptvz\XY.A1B1.Test.1.ZZZ.blablablabla\XY.A1B1.Test.1.avi )
    set vids=_tempx_vids.txt
    
    :: Variable = Hauptverzeichnis ( Beispiel: D:\Hauptvz )
    set hvz=%cd%
    
    :: Variable = Reportdatei ( Report zur Kontrolle )
    set check=_tempx_report.txt
    
    :: Diverse Dateien löschen, die nachfolgend erzeugt werden, 
    :: sonst doppelte Eintragung bei mehrfachen Start der BAT
    if exist %hvz%\%neudatna% del %hvz%\%neudatna%
    if exist %hvz%\%check% del %hvz%\%check%
    
    dir /s/b *.avi > %hvz%\%vids%
    
    dir /ad/b %praef% > %hvz%\%vzs%
    
    :: Erzeugen des neuen Namen für Videos und abspeichern 
    :: in Datei ( %neudatna% )
    FOR /F "tokens=1,2,3,4 delims=." %%a in (%hvz%\%vzs%) do (
    echo %%a.%%b.%%c.%%d >> %hvz%\%neudatna% 
     )
    
    :: In das jeweilige Verzeichnis springen; umbenennen; 
    :: ins Hauptverzeichnis kopieren und Videodatei löschen
    FOR /F %%g in (%hvz%\%neudatna%) do (
    cd %hvz%\%%g*
    RENAME *.avi %%g.avi
    echo RENAME *.avi %%g.avi >> %hvz%\%check%
    copy *.avi %hvz%\*.*
    del *.* /Q
    cd..
     )
    
    :: Alle Unterverzeichnisse löschen
    FOR /F %%i in (%hvz%\%vzs%) do (
    rmdir %hvz%\%%i /Q
     )
    
    
    Grüße
     
Thread Status:
Not open for further replies.

Share This Page