Windows:Verzeichnistruktur per Batch abarbeiten
Aus znilwiki
Changelog:
- 21.01.2012 erste Version mit Hilfsdatei im %TEMP% Ordner
- 09.07.2021 alternative Version die ohne Datei auskommt
Vorwort
Hier wird zwar das Abarbeiten einer Verzeichnisstruktur beschrieben - das funktioniert aber auch prima mit Dateien.
Wichtig ist was bei dem Befehl zu Ermittlung der Grunddaten zurück kommt, hier ist es
dir /b "Pfad"
Version mit Hilfsdatei
Nachfolgend eine simple Batch-Datei die eine vorhandene Ordnerstruktur abarbeitet.
Konkret wurde das Beispiel genutzt um eine bestimmte Datei aus jedem Benutzerordner zu sichern.
Die ermittelte Ordnerstruktur wird dabei in einer Textdatei gespeichert und danach abgearbeitet
Download: Media:Backup-JPUser.dat.cmd
@echo off
REM ##################################################################################################
REM Einfache Batchdatei die eine Ordnerstruktur abarbeitet.
REM In diesem Fall erstellt diese Sicherheitskopien aller JPUser.dat Dateien der Benutzer
REM 2011 Bernhard Linz
REM Bernhard@znil.net
REM Bernhard.Linz@datagroup.de
REM veröffentlicht auf znilwiki: http://znil.net
REM
REM - Arbeitsgrundlage erstellen #####################################################################
REM Wir löschen das alte Sicherungsverzeichnis samt Inhalt und erstellen es leer neu
RMDIR \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS /s /Q
MKDIR \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS
REM Wir lassen uns alle Ornder im Verzeichnis auflisten und nehmen diese als Arbeitsgrundlage.
dir /b "\\SERVER\user" > "%TEMP%\benutzerliste.txt"
for /F "eol=# tokens=1-4 delims=\" %%i in (%TEMP%\benutzerliste.txt) do call :SCHLEIFE %%i %%j
goto ENDE
REM SCHLEIFE #########################################################################################
:SCHLEIFE
set ORDNERNAME=%1
set ORDNERNAME2=%1 %2
if /I "%ORDNERNAME%"=="" goto :EOF
for /f "tokens=1,2,3 delims=." %%a in ("%ORDNERNAME%") do set ORDNERNAME1=%%a
echo %DATE%/%TIME% - Verarbeitetes Profil %ORDNERNAME% / %ORDNERNAME1%
copy \\SERVER\user\%ORDNERNAME%\JumpingProfile\JPUser.dat \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS\%ORDNERNAME%.JPUser.dat
goto :EOF
REM Schluss ist ######################################################################################
:ENDE
REM Aufräumen
del "%TEMP%\benutzerliste.txt"
REM Und eine Anzeige falls die Batch per Doppelklick gestartet wird und wir etwas lesen wollen
echo .
echo Alle Dateien nach \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS kopiert.
echo .
echo Verzeichnisinhalt wird nach Tastendruck einmal angezeigt
echo .
pause
dir \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS
pause
Alternative Version
Diese Version verzichtet auf das Zwischenspeichern in einer Textdatei:
@echo off
REM ##################################################################################################
REM Einfache Batchdatei die eine Ordnerstruktur abarbeitet.
REM In diesem Fall erstellt diese Sicherheitskopien aller JPUser.dat Dateien der Benutzer
REM 2011 Bernhard Linz
REM Bernhard@znil.net
REM Bernhard.Linz@datagroup.de
REM veröffentlicht auf znilwiki: http://znil.net
REM
REM - Arbeitsgrundlage erstellen #####################################################################
REM Wir löschen das alte Sicherungsverzeichnis samt Inhalt und erstellen es leer neu
RMDIR \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS /s /Q
MKDIR \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS
REM Wir lassen uns alle Ornder im Verzeichnis auflisten und nehmen diese als Arbeitsgrundlage.
for /F "eol=# tokens=1-4 delims=\" %%i in ('dir /b "\\SERVER\user"') do call :SCHLEIFE %%i %%j
goto ENDE
REM SCHLEIFE #########################################################################################
:SCHLEIFE
set ORDNERNAME=%1
set ORDNERNAME2=%1 %2
if /I "%ORDNERNAME%"=="" goto :EOF
for /f "tokens=1,2,3 delims=." %%a in ("%ORDNERNAME%") do set ORDNERNAME1=%%a
echo %DATE%/%TIME% - Verarbeitetes Profil %ORDNERNAME% / %ORDNERNAME1%
copy \\SERVER\user\%ORDNERNAME%\JumpingProfile\JPUser.dat \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS\%ORDNERNAME%.JPUser.dat
goto :EOF
REM Schluss ist ######################################################################################
:ENDE
REM Und eine Anzeige falls die Batch per Doppelklick gestartet wird und wir etwas lesen wollen
echo .
echo Alle Dateien nach \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS kopiert.
echo .
echo Verzeichnisinhalt wird nach Tastendruck einmal angezeigt
echo .
pause
dir \\SERVER\FREIGABE\zzz.JPUser.dat.BACKUPS
pause
Loading comments...