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 Backupscript soll automatisch die nächsten Unterordner finden und als Variable übergeben

Mitglied: Zunaras

Zunaras (Level 1) - Jetzt verbinden

25.12.2016 um 21:06 Uhr, 1090 Aufrufe, 7 Kommentare, 1 Danke

Schönen guten Tag und frohe Weihnachten!

Ich habe einen Foto-Ordner mit Unterordner in Jahren unterteilt.
D:\Eigene Dateien\Bilder\2016
D:\Eigene Dateien\Bilder\2015
D:\Eigene Dateien\Bilder\2014
usw.

Eine Batch übernimmt die Sicherung der einzelnen Ordner. So dass ich pro Ordner-Jahr eine *.7z habe. Also - ich habe pro Jahr eine Batch, die ich manuell einzeln hintereinander ausführe.
Mir kam nun die Idee, ob es nicht ginge, nur den Ordner D:\Eigene Dateien\Bilder anzugeben, um damit automatisiert den Gesamten Pfad, wie oben beschrieben, meiner Batch als Variable zu übergeben. Also eine Schleife bis alle Unterordner abgearbeitet wurden.
Ist das möglich?

Hier mal der Anfang meiner Batch:
01.
@echo off
02.

03.
REM ---- Quell-Pfad bitte anpassen ----
04.
REM -----------------------------------
05.
set SF=D:\Eigene Dateien\Bilder\2016
06.
echo Backup von: %SF%
07.

08.
REM ---- Backup-Pfad bitte anpassen ----
09.
REM ------------------------------------
10.
set BF=T:\Dateiversionsbackup
In Zeile 5 soll der gefundene Pfad aus der Schleife als Variable eingetragen werden:
set SF=%PfadausSchleife% (z.B: D:\Eigene Dateien\Bilder\2016)

Viele Grüße
Mitglied: clragon
25.12.2016, aktualisiert um 22:21 Uhr
Klar geht das. Hiermit:

01.
FOR /F "delims=" %%A IN ('dir /b /ad "%DeinePfadVariable%"') do (
02.
:: deine Befehle
03.
)
Der Schnipsel verarbeitet Jeden Ordner in "%DeinePfadVariable%"
Der Pfad des Ordners, also
D:\Eigene Dateien\Bilder\2016
D:\Eigene Dateien\Bilder\2015
D:\Eigene Dateien\Bilder\2014
ist dabei %%A.
Also musst du nur noch 7z a %%A --parameter --usw
eingeben.

Dir auch frohe Weihnachten

lg clragon
Bitte warten ..
Mitglied: 77559
25.12.2016, aktualisiert um 23:21 Uhr
Die einfachste Version ist dies :
01.
@Echo off
02.
Set Base="D:\Eigene Dateien\Bilder"
03.
Pushd %Base%
04.
For /d %%A in (*) Do 7z.exe a "%%A.7z*" "%%A\*"
05.
popd
Dabei ist zu beachten das hierbei keien Sortierung der Ordner erfolgt
(abgesehen von der auf ntfs-Laufwerken immanenten).

Eine genauere Selektion auf max vierstellige numerische Ordner mit 20 am Anfang:
01.
@Echo off
02.
Set Base="D:\Eigene Dateien\Bilder"
03.
Pushd %Base%
04.
For /f "delims=" %%A in (
05.
 'DIr /B /AD ????^|Findstr "20[0-9][0-9]"' 
06.
   ) Do 7z.exe a "%%A.7z*" "%%A\*"
07.
popd
08.
Bitte warten ..
Mitglied: Zunaras
26.12.2016, aktualisiert 07.01.2017
Hallo und vielen Dank!
eure Beispiele kann ich leider so nicht umsetzen. Ich gebe euch hier mal den gesamten Code, damit ihr einen besseren Überblick habt. Ich habe mir das alles mehr nach Try and Error zusammengebastelt als mit wirklichem Können.
Hier laufen einige Prüfungen durch und 7zip arbeitet mit Diff-Backups. Wenn das letzte Diff-Backup größer als 10% vom Voll-Backup ist, wird ein neues Voll-Backup erstellt.

Wenn möglich, müsste sich der Pfad in Zeile 5 nach jedem Durchlauf verändern, bis alle direkten Unterordner abgearbeitet wurden.

Viele Grüße

01.
@echo off
02.

03.
REM ---- Quell-Pfad bitte anpassen ----
04.
REM -----------------------------------
05.
set SF=D:\Eigene Dateien\Bilder\2016
06.
echo Backup von: %SF%
07.

08.
REM ---- Backup-Pfad bitte anpassen ----
09.
REM ------------------------------------
10.
set BF=T:\Dateiversionsbackup
11.

12.
REM ---- Backup-Reservekopie-Pfad bitte anpassen für Robocopy ----
13.
REM --------------------------------------------------------------
14.
set RF=S:\Dateiversionsbackup-Kopie
15.

16.
REM ---- Max. Groesse vom Diff-Backup                 ----
17.
REM ---- z.B. 100000000 = 100 MB                      ----
18.
REM ---- Moeglich ist auch die Angabe von Prozentwert ----
19.
REM ---- z.B. max. 10% der Groesse vom Vollbackup     ----
20.
REM ------------------------------------------------------
21.
REM set GF=100000000
22.
set Proz=10
23.

24.
set prog=C:\7z-Backup\7-Zip
25.
REM set logpath=Logs   ---- werden im Backup-Pfad gespeichert ----
26.

27.
REM Alternativ Pfad bauen
28.
      set SP=%SF:\\=NET\%
29.
      set SP=%SP::=%
30.

31.
REM ---- Freigabe der internen Bitlocker-Festplatte ----
32.
REM ----------------------------------------------------
33.
REM interne Sicherungsplatte
34.
REM manage-bde -unlock T: -recoverypassword [Schlüssel]
35.
REM timeout /t 5
36.

37.
REM ---- loeschen von Archiven und Logs, aelter als 100 Tage ----
38.
REM -------------------------------------------------------------
39.
C:\7z-Backup\DelAge\DelAge32 "%BF%\*.*" 100 /recurse /rd
40.

41.
md "%BF%\%SP%"
42.

43.
for /f "tokens=*" %%a in ('dir "%BF%\%SP%"\*Full.7z /b /od') do set last=%%a
44.
for /f "tokens=*" %%a in ('dir "%BF%\%SP%"\*.7z /b /od') do set lastFile=%%a
45.
for /f "tokens=*" %%a in ('dir "%BF%\%SP%"\*.7z /b /od') do set lastDiff=%%a
46.
for /f %%a in ('powershell -Command "Get-Date -format yyyy.MM.dd_HH.mm.ss"') do set logtime=%%a
47.
for /f %%a in ('powershell -Command "Get-Date -format HH.mm.ss"') do set start=%%a
48.

49.
if not exist "%BF%\%SP%\*Full.7z" goto FullBackup
50.
forfiles /P "%BF%\%SP%" /M "%lastFull%" /D -30 >nul 2>&1 && goto FullBackup
51.
if /i %lastfile:~-7% == Full.7z goto DiffBackup
52.
if /i %lastDiff:~-7% == Diff.7z goto Pruefung
53.

54.
:Pruefung
55.
Echo Pruefung der Dateigroesse vom letzten DiffBackup:
56.
Echo.
57.
for %%F in ("%BF%\%SP%\%lastDiff%") do set groesseDiff=%%~zF
58.
for %%F in ("%BF%\%SP%\%last%") do set groesse=%%~zF
59.

60.
set Stellen=0
61.
set R=%temp%\Rechne.vbs
62.
echo Set a=WScript.Arguments:WScript.Echo FormatNumber(Eval(Replace(a(0),",",".")),a(1),,,0)>%R%
63.
for /f %%i in ('cscript //nologo %R% "%groesse%/100*%Proz%" %Stellen%') do set Ergebnis=%%i
64.
echo Groesse vom VollBackup         %groesse%
65.
echo Groesse 10Proz von Vollbackup  %Ergebnis%
66.
echo Groesse vom letzten DiffBackup %groesseDiff%
67.

68.
if %groesseDiff% GTR %Ergebnis% goto FullBackup
69.

70.
:DiffBackup
71.
Echo Diff-Backup wird durchgefuehrt:
72.
Echo.
73.
echo Start: %start%>>"%BF%\%SP%\%logtime%_Diff.log"
74.
"%prog%\7z.exe" u -ssw -mx1 -mmt=3 "%BF%\%SP%\%last%" -u- "%SF%" -up0q3r2x2y2z0w2!"%BF%\%SP%\%logtime%_Diff.7z" >>"%BF%\%SP%\%logtime%_Diff.log"
75.
for /f %%a in ('powershell -Command "Get-Date -format HH.mm.ss"') do set ende=%%a
76.
echo Ende: %ende%>>"%BF%\%SP%\%logtime%_Diff.log"
77.
goto Weiter
78.

79.
:FullBackup
80.
Echo Full-Backup wird durchgefuehrt:
81.
Echo.
82.
echo Start: %start%>>"%BF%\%SP%\%logtime%_Full.log"
83.
"%prog%\7z.exe" a -ssw -mx1 -mmt=3 "%BF%\%SP%\%logtime%_Full.7z" "%SF%"  >>"%BF%\%SP%\%logtime%_Full.log"
84.
for /f %%a in ('powershell -Command "Get-Date -format HH.mm.ss"') do set ende=%%a
85.
echo Ende: %ende%>>"%BF%\%SP%\%logtime%_Full.log"
86.

87.
REM -bd  (Disable percentage indicator)
88.
REM -ssw (auch geoeffnete Dateien)
89.
REM -mx3 (0=Copy, 1=Fastest (mp3, jpg, Videos), 3=Fast, 5=normal, 7=Maximum, 9=Ultra)
90.
REM -spf (komplette Pfadangaben, hier nicht nutzbar)
91.
REM -mmt=3 (Anzahl der CPU-Kerne, hier 3)
92.
REM @include.txt
93.
REM -xr@exclude.txt
94.

95.
:Weiter
96.
REM ---- Freigabe einer der Bitlocker-Wechsel-Festplatten ----
97.
REM ----------------------------------------------------------
98.
REM Sicherung_1
99.
manage-bde -unlock S: -recoverypassword [Schlüssel]
100.
REM Sicherung_2
101.
manage-bde -unlock S: -recoverypassword [Schlüssel]
102.

103.
REM timeout /t 5
104.

105.
Echo Dateiversionsbackup-Reservekopie wird auf das Wechsellaufwerk gespiegelt:
106.
Echo.
107.
for /f %%a in ('powershell -Command "Get-Date -format yyyy.MM.dd_HH.mm.ss"') do set Robocopy=%%a
108.
md "%RF%\%SP%"
109.
robocopy.exe "%BF%\%SP%"    "%RF%\%SP%" /MIR /XJ /R:0 /W:0 /TEE /MT:1 /Log+:"%BF%\%SP%\%Robocopy%_Robocopy.log"
110.

111.
if exist "%BF%\%SP%" start explorer.exe "%BF%\%SP%"
112.
if exist "%RF%\%SP%" start explorer.exe "%RF%\%SP%"
113.

114.
REM pause
115.
REM manage-bde -lock S:
116.
REM manage-bde -lock F:
117.

118.
REM "%prog%\USB_Disk_Eject.exe" /REMOVELABEL "USB-DAHO"
119.
REM exit
Bitte warten ..
Mitglied: Zunaras
08.01.2017 um 14:34 Uhr
Moin!
ich habe noch mal probiert:

In c:\pflege befinden sich die Ordner Test1 und Test2

in Start.bat
01.
set SF1=c:\pflege
02.
FOR /F "delims=" %%A IN ('dir /b /ad "%SF1%"') do call "C:\7z-Backup\Backup7z (Bilder Unterordner).bat"
Dann wird die gewünschte bat gestartet mit geändertem Anfang.

01.
REM ---- Quell-Pfad bitte anpassen ----
02.
REM -----------------------------------
03.
rem set SF1=c:\pflege
04.
FOR /F "delims=" %%A IN ('dir /b /ad "%SF1%"') do set SF2=%%A
05.
set SF3=%SF1%\%SF2%
06.

07.
echo Backup von: %SF3%
Die Batch läuft auch zwei mal durch. Aber es wird immer nur Test2 übergeben.

01.
C:\7z-Backup>set SF1=c:\pflege
02.
C:\7z-Backup>FOR /F "delims=" %A IN ('dir /b /ad "c:\pflege"') do call "C:\7z-Backup\Backup7z (Bilder Unterordner).bat"
03.
C:\7z-Backup>call "C:\7z-Backup\Backup7z (Bilder Unterordner).bat"
04.
C:\7z-Backup>rem @echo off
05.
C:\7z-Backup>REM ---- Quell-Pfad bitte anpassen ----
06.
C:\7z-Backup>REM -----------------------------------
07.
C:\7z-Backup>rem set SF1=c:\pflege
08.
C:\7z-Backup>FOR /F "delims=" %A IN ('dir /b /ad "c:\pflege"') do set SF2=%A
09.
C:\7z-Backup>set SF2=Test1
10.
C:\7z-Backup>set SF2=Test2
11.
C:\7z-Backup>set SF3=c:\pflege\Test2
12.
C:\7z-Backup>echo Backup von: c:\pflege\Test2
13.
Backup von: c:\pflege\Test2
14.
C:\7z-Backup>pause
15.
Drücken Sie eine beliebige Taste . . .
Bitte warten ..
Mitglied: 131381
08.01.2017, aktualisiert um 14:58 Uhr
Die Batch läuft auch zwei mal durch. Aber es wird immer nur Test2 übergeben.

Das ist klar weil wenn du mit SET innerhalb einer FOR-Schleife eine Variable definierst diese entweder nur mit call set oder delayedexpansion und Ausrufezeichen beim Abrufen der Variablen zur Laufzeit aufgelöst werden!
01.
setlocal ENABLEDELAYEDEXPANSION
02.
set "SF1=c:\pflege"
03.
FOR /F "delims=" %%A IN ('dir /b /ad "%SF1%"') do (
04.
    set "SF3=%SF1%\%%A"
05.
    echo Backup von: !SF3!
06.
)
Lese dazu bitte dieses Tutorial
https://www.administrator.de/wissen/tutorial-for-schleife-155681.html

Dann verstehst du den Unterschied zwischen dem Auflösen der Variablen zur Laufzeit und vor dem Ausführen.
Bitte warten ..
Mitglied: Zunaras
09.01.2017 um 11:49 Uhr
Hallo und vielen Dank!

Das Tutorial habe ich bereits viele Tage nebenher geöffnet und versuch es zu verstehen....

Ein Problem habe ich jetzt mit dem Update-Switch-Command von 7z. Durch das "!" in -up0q3r2x2y2z0w2! wird ein Pfad angefügt.
Bitte warten ..
Mitglied: 131381
LÖSUNG 09.01.2017 um 11:51 Uhr
Dazu schalte DelayedExpansion vor dieser Zeile ab
setlocal disabledelayedexpansion
Bitte warten ..
Ähnliche Inhalte
Windows Server
Probleme mit Backupscript
Frage von takvorianWindows Server9 Kommentare

Hallo zusammen, an einem Hypervisor (Der Hypervisor ist kein Mitglied der Domäne) mit Windows Server 2016 exportiere ich mittels ...

Batch & Shell

(Batch): "Find" Befehl nach aktuellem Datum filtern

gelöst Frage von unauthorized-userBatch & Shell3 Kommentare

Guten Morgen an alle, für die Dokumentation der Server-Updates habe ich eine winzige *.Bat-Datei geschrieben, welche mir alle installierten ...

Batch & Shell

Find Befehle kombinieren

gelöst Frage von IleiesBatch & Shell2 Kommentare

Hallo Zusammen, Im Ordner 'C:\Test' befinden sich einige Dateien. Manche davon enden auf '.bak' oder '.db'. Mit diesen beiden ...

Backup

Find-Befehl - Es hakt gerade

Frage von it-fraggleBackup1 Kommentar

Vielleicht sollte ich endlich schlafen gehen, aber DAS muss ich noch zuende machen. Wo ist der Fehler? In /media/backups/ ...

Neue Wissensbeiträge
Linux Tools
Dolibarr ERP CRM - Überblick der Software
Anleitung von radiogugu vor 1 StundeLinux Tools

Hallo. Nach der Anleitung zur Einrichtung und Installation der Datenbank und des Webserver Dolibarr ERP CRM Installation möchte ich ...

Linux Tools

Dolibarr ERP CRM Installation der Datenbank und des Webserver

Anleitung von radiogugu vor 1 StundeLinux Tools

Hallo zusammen. Ich bin seit kurzem nebenberuflich selbstständig und suchte eine geeignete Software für die Auftragsverwaltung, CRM und ein ...

Sicherheit

Chrome 79 übermittelt eingegebene Kennwörter nach Hause

Information von DerWoWusste vor 20 StundenSicherheit11 Kommentare

Ab sofort warnt Chrome standardmäßig Nutzer davor, wenn aus Leaks bekannte Passwörter zum Einsatz kommen. Beim Besuch einer Website, ...

Viren und Trojaner
Trend Micro WFBS 10 SP1 Patch 2185
Tipp von Abramelin vor 1 TagViren und Trojaner1 Kommentar

Hi, Hab gerade gesehen das Patch 2185 für TM WFBS 10 SP1 erschienen ist! Werde mal Morgen den Patch ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 Herunterfahren - Funktioniert nach Upgrade von Windows 7 nicht mehr
Frage von krischeuWindows 1016 Kommentare

Hi, ich habe verschiedene PCs mit dem Upgrade Assistenten von Windows 7 Pro 64 Bit auf Windows 10 geupdatet. ...

Windows 10
Win10 Remote Desktop User anders
Frage von ludibubiWindows 1014 Kommentare

Folgende Situation: Auf meinem Rechner (Win10) in der Firma (Domänen-Netzwerk) starte ich abends bevor ich gehe einen Newsletterversand. Damit ...

Entwicklung
Programmiersprache für Server
gelöst Frage von MondeosEntwicklung12 Kommentare

Ich bin relativ neu im Gebiet der Programmierung etc.(mache das auch nur als Hobby bin noch Schüler), und wollte ...

Switche und Hubs
Kein DHCP hinter neuen Switch
Frage von mwormerSwitche und Hubs12 Kommentare

Hallo zusammen, bin gerade ein wenig ratlos. Wir haben vorgestern unseren alten Zyxel GS-1548 gegen einen TP-Link SG1024DE getauscht. ...