Aktionen

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...