skyemugen
Goto Top

Ausgabe der Anzahl Dateien und Ordner als Variable

Hallo alle miteinander,

ich hoffe ihr genießt den Schnee und könnt mir bei meinem eigentlich banalen Problem weiterhelfen.

Also folgende Sache:

Ausgangspunkt
Bisher existiert für den Backup unseres Servers ein selbstgeschriebenes batch-script, das auch wunderbar funktioniert..

Ziel
In dem logfile, das beim script geschrieben wird, soll auch die Anzahl der Dateien und Verzeichnisse als echo gesetzt werden.

Bisheriger Lösungsansatz
Das Fundament meiner Überlegung bildet ganz simpel
dir %path% /S
bzw.
dir %path /S /A-d
für Dateien und
dir %path% /S /Ad
für Verzeichnisse (der aber nicht wirklich zu funktionieren scheint)
und mit der Hilfe von google stieß ich auf ein code-Fragment, dass mir dabei helfen soll, nur die Anzahl als Variable zu erhalten und setzen zu können aber schauen wir uns mal den gesamten Salat an:

@echo off

::Code für Variablen
set /A filecnt=0
set /A dircnt=0
set Quelle="D:\Mosaik"  
for /F %%i in ('dir %Quelle% /S /A-d') do set /A filecnt=filecnt+1  
for /F %%i in ('dir %Quelle% /S /Ad') do set /A dircnt=dircnt+1  

set Schalter=/D/E/V/C/I/K/H/R/Q/Y
set logfile="D:\Testbackup.log"  

::Sicherung
echo %date:~0% - %time:~0,5% Uhr - Beginne Backup Mosaik >>%logfile%
set Ziel="B:\Backup_SERVER2000\Mosaik"  
if not exist %Ziel% md %Ziel%
xcopy %Quelle% %Ziel% %Schalter% >>%logfile% 2>&1
echo Soll: %filecnt% Dateien - %dircnt% Ordner >>%logfile%
echo %date:~0% - %time:~0,5% Uhr - Das Backup wurde fertiggestellt. >>%logfile%
exit

Das script funtkioniert auch soweit, jedoch bekomme ich bei Dateien und Verzeichnisse nicht die realen Ergebnisse geliefert.
(real: 9561 Dateien; 4505 Ordner - Ausgabe im script: 13773 Dateien; 22534 Ordner)

Den FOR Befehl kann ich mit meinem begrenzten batch-Verständnis nicht so ganz nachvollziehen, ich stieß beim googlen darauf ;)

Ich hoffe ihr könnt mir ein wenig auf die Sprünge helfen

Grüße André

Content-ID: 156203

Url: https://administrator.de/forum/ausgabe-der-anzahl-dateien-und-ordner-als-variable-156203.html

Ausgedruckt am: 24.12.2024 um 18:12 Uhr

Ausserwoeger
Ausserwoeger 02.12.2010 um 13:30:18 Uhr
Goto Top
Dann würd ich mal Robocopy versuchen ! is ab Windows 2003 Server im betriebssystem drin und funktioniert wunderbar ! und du hättest dein gewünschtes ergebnis ohne lässtiges Batchfileschreiben.

LG Andreas Ausserwöger
Biber
Biber 02.12.2010 um 13:39:51 Uhr
Goto Top
Moin Skyemugen,

willkommen im Forum.
Du sollstest noch bei dieinen DIR-Aufrufen den Schalter /b ergänzen ... dann werden nur die Dateien bzw Verzeichnisse (in je einer Zeile) aufgelistet.
Ohne Schalter /b kommt noch einiges an Füllstoff dazu (Summenzeilen u.ä), was deine aufgeblähte Anzahl an gecounteten erklärt.

Zum Thema FOR-Anweisung findest du im Bereich "Batch & Shell" eine 5-Sterne-Anleitung.

Grüße
Biber
Skyemugen
Skyemugen 02.12.2010 um 15:06:35 Uhr
Goto Top
Aloha Biber,

natürlich Schalter /b ... ach manchmal kann es doch so einfach sein *lach* ich danke dir mein lieber Biber, funktioniert wunderbar. (Warum ich da nicht selbst drauf gekommen bin, hm der Schnee verwirrt meine Sinne heute ^.^)

Ja das ausführliche Tut zu FOR habe ich bereits gelesen (oder mehr halb überflogen), wurde ich noch nicht ganz schlau draus aber was nicht ist, kann ja noch werden.

@ausserwöger
nunja leider (wie man auch im code sehen kann) ist das ein Windows 2000 Server Betriebssystem ;)

auf jeden Fall einen Dank für eure Anteilnahme und Hilfestellung (die Lösung war eben doch banal höhö)
Ausserwoeger
Ausserwoeger 05.12.2010 um 15:10:42 Uhr
Goto Top
Nur noch zur info ! Gibts auch zum nachinstallieren als download also geht auch mit win 2000 servern face-smile !

LG Andreas Ausserwöger
Skyemugen
Skyemugen 06.12.2010 um 11:18:40 Uhr
Goto Top
Aloha,

ich hoffe hier guckt nochmal wer rein und kann mir kurze Hilfestellung geben, denn es hat sich ergeben, dass ich beim Backup ein bestimmtes Verzeichnis ignorieren muss.
Das an sich ist kein Problem, nur müsste ich jetzt beim Zähldurchgang natürlich ebenso dieses Verzeichnis ausschließen, da sonst mein Vergleich ja sinnfrei wäre.

Die xcopy-Zeile sieht jetzt wie folgt aus:
xcopy %Quelle% %Ziel% %Schalter%/EXCLUDE:D:\Home\exclude.txt >>%logfile% 2>&1
und die exclude.txt so:
D:\Home\Benutzerverzeichnis\Name.Nachname\

Ich wüsste momentan leider nicht, wie ich das umsetzen kann, darum hoffe ich, ihr könnt mir erneut helfen.

Grüße André

ps: nicht wundern, dass es jetzt ein anderer Pfad ist als im EP, ist schon korrekt ;)

EDIT: spielt keine Rolle mehr, xcopy kommt sowieso mit dem Umfang der Struktur scheinbar nicht klar und gibt den Standard-Fehlercode „Nicht genügend Arbeitsspeicher“ raus, ich vermute aber, der gesamte Pfad der Unterordner wird inzwischen zu lang sein ... und bei robocopy bekomme ich ständig ERROR 5 Zugriff verweigert ~.~