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

Anzahl der Verzeichnisse innerhalb eines Batch bestimmen

Frage Entwicklung Batch & Shell

Mitglied: flicflac

flicflac (Level 1) - Jetzt verbinden

24.09.2006, aktualisiert 26.09.2006, 5279 Aufrufe, 5 Kommentare

Hallo

Ich bin neu hier und habe auf Anraten in einem anderen Forum hierher gefunden.
Natürlich sucht man in einem Forum Antworten auf Fragen, also...
(Naja, eigentlich sind es drei verschiedene Fragen welche alle miteinander zu tun haben. Aber ich teile die mal auf verschiedene Threads auf und hoffe dass das in eurem Sinne ist.

In Anlehnung an bestimmten Ordner per Batch-Datei löschen


habe ich das Beispiel geringfügig abgewandelt:

::-------old_save_erase.cmd
@echo off
(set /a MaxOldDirs=4) & (set /a counter=12)
:: MaxDirs = Anzahl der verbleibenden Verzeichnisse
set /a MaxDirs=MaxOldDirs-1
@echo MaxOldDirs=%MaxOldDirs%
::-- for /f "delims=" %%i in ('dir /Ad /b /o:<blubb>-D "?? ??.??.200?"') do call :loop "%%i"
for /f "delims=" %%i in ('dir /Ad /b /o: "j:\datasave" -D "?? ??.??.20??"') do call :loop "%%i"
goto :eof
:loop
set /a counter=%Counter%-1
if %counter% LEQ %MaxDirs% (echo %~1 ...%Counter% ^<^= %MaxDirs%....ok, kann bleiben) & goto :eof
echo %~1 ...%Counter% ^> %MaxDirs% ...hau ich wech mit RD *gg
::rd %1 /s /q
goto :eof
::-------end old_save_erase.cmd


Eigentlich tut es genau das was ich möchte, jedoch nur wenn die Anzahl der vorhandenen Verzeichnisse mit der Vorgabe der Variable "counter" übereinstimmt.
Wie kann ich am Begin des Batch die Anzahl der existierenden Verzeichnisse bestimmen? Diese möchte ich dann der Variable "counter" zuweisen.

Wie kann man das zu verwendende Datumsformat einstellen (z.B: 2006/09/24), 20.09.2006 ist "unschön"? Das Systenstandardformat sollte jedoch erhalten (unberührt) bleiben.

THX
flic


PS: Die Links zu den anderen Fragen liefere ich nach.

Hier der Link zu Beitrag Nr. 2: Logfile während Verzeichniskopie erstellen und bei Fehler Aktion auslösen
Mitglied: Biber
25.09.2006 um 07:13 Uhr
Moin flicflac,
willkommen im Forum.
Zur ersten Frage - die vorhandenen Verzeichnisse durchzählen:
01.
for /f %%i in ('dir /Ad  "j:\datasave\?? ??.??.20??"^|find "Verzeichnis("') do  set /a "counter=%%i" 
..als neue Zeile nach Set /a MaxOldDirs... Das Setzen von Counter in der ersten Zeile kann entfallen.

Zur zweiten Frage (Datumsformatierung) gibt es ein Tutorial "Umgang mit Datums- und Zeitvariablen im Batch" im Bereich "Batch & Shell".

Gruß
Biber
P.S. Ich interpretiere es so, dass unterhalb von j:\datasave einige Verzeichnisse der Form "xx tt.mm.yyyy" liegen? Dann wäre auch die Syntax Deiner DIR-Anweisungen anzupassen:
dir ... j:\datasave\?? ??.??.20??"
Bitte warten ..
Mitglied: flicflac
26.09.2006 um 10:54 Uhr
Hallo Biber

erst mal vielen Dank, funktioniert soweit.

::-------old_save_erase.cmd
@echo off
(set /a MaxOldDirs=4) & (set /a counter=0)
:: MaxDirs = Anzahl der verbleibenden Verzeichnisse
set /a MaxDirs=MaxOldDirs-1
::-- folgende Zeile wenn Datumsformat mit Wochentag (Mo 25.09.2006)
::-- for /f %%i in ('dir /Ad "j:\datasave\?? ??.??.20??"^|find "Verzeichnis("') do set /a "counter=%%i"
::-- folgende Zeile wenn Datumsformat ohne Wochentag (25.09.2006)
for /f %%i in ('dir /Ad "j:\datasave\??.??.20??"^|find "Verzeichnis("') do set /a "counter=%%i"
@echo MaxOldDirs=%MaxOldDirs%
@echo counter=%counter%
::-- folgende Zeile wenn Datumsformat mit Wochentag (Mo 25.09.2006)
::-- for /f "delims=" %%i in ('dir /Ad /b /o: "j:\datasave" -D "?? ??.??.20??"') do call :loop "%%i"
::-- folgende Zeile wenn Datumsformat ohne Wochentag (25.09.2006)
for /f "delims=" %%i in ('dir /Ad /b /o: "e:\datasave" -D "??.??.20??"') do call :loop "%%i"
goto :eof
:loop
set /a counter=%Counter%-1
if %counter% LEQ %MaxDirs% (echo %~1 ...%Counter% ^<^= %MaxDirs%....ok, kann bleiben) & goto :eof
echo %~1 ...%Counter% ^> %MaxDirs% ...hau ich wech mit RD *gg
::rd %1 /s /q
goto :eof
::-------end old_save_erase.cmd

Allerdings scheint er den Batch zweimal zu durchlaufen, was könnte das sein?

Hier das log:

MaxOldDirs=4
counter=13
14.09.2006 ...12 > 3 ...hau ich wech mit RD *gg
14.09.2006 ...11 > 3 ...hau ich wech mit RD *gg
15.09.2006 ...10 > 3 ...hau ich wech mit RD *gg
15.09.2006 ...9 > 3 ...hau ich wech mit RD *gg
16.09.2006 ...8 > 3 ...hau ich wech mit RD *gg
16.09.2006 ...7 > 3 ...hau ich wech mit RD *gg
17.09.2006 ...6 > 3 ...hau ich wech mit RD *gg
17.09.2006 ...5 > 3 ...hau ich wech mit RD *gg
18.09.2006 ...4 > 3 ...hau ich wech mit RD *gg
18.09.2006 ...3 <= 3....ok, kann bleiben
19.09.2006 ...2 <= 3....ok, kann bleiben
19.09.2006 ...1 <= 3....ok, kann bleiben
20.09.2006 ...0 <= 3....ok, kann bleiben
20.09.2006 ...-1 <= 3....ok, kann bleiben
21.09.2006 ...-2 <= 3....ok, kann bleiben
21.09.2006 ...-3 <= 3....ok, kann bleiben
22.09.2006 ...-4 <= 3....ok, kann bleiben
22.09.2006 ...-5 <= 3....ok, kann bleiben
23.09.2006 ...-6 <= 3....ok, kann bleiben
23.09.2006 ...-7 <= 3....ok, kann bleiben
24.09.2006 ...-8 <= 3....ok, kann bleiben
24.09.2006 ...-9 <= 3....ok, kann bleiben
25.09.2006 ...-10 <= 3....ok, kann bleiben
25.09.2006 ...-11 <= 3....ok, kann bleiben
26.09.2006 ...-12 <= 3....ok, kann bleiben
26.09.2006 ...-13 <= 3....ok, kann bleiben


Wenn ich es "scharf" mache, werden nur 5 der alten Verzeichnisse gelöscht, 8 bleiben erhalten.

Könntest du mir da nochmal weiterhelfen?

THX
flic
Bitte warten ..
Mitglied: Biber
26.09.2006 um 13:11 Uhr
...och, dass ist einfach...

Du hast in der unteren DIR-Anweisung stehen:
dir "e:\datasave" -D "??.??.20??"

(warum oben Laufwerk J: und unten E: soll mir ja egal sein ... )

Aber:
Übersetzt wird das Ganze als "liste mir alles aus Verzeichnis e:\datasave UND alles, was "?? ??.20??" heißt... oder irgendwas doppelt gemoppeltes.
Hatte ich im letzten Post schon mal erwähnt.

Richtig wäre:
Dir [Schalter] "e:\datasave\"?? ??.??.20??" [bzw j:\datasave... -das kann ich nicht beurteilen]

wobei [Schalter] = sein sollten:
/Ad (nur Verzeichnisse
/b wie billig
/oD nach Datum (ältere zuerst)

Der Schalter -D (=Dönekens), den Du da drin hast, kann wech.

Gruß
Biber
Bitte warten ..
Mitglied: flicflac
26.09.2006 um 14:34 Uhr
@ Biber

So, jetzt tut es ganau was es soll. THX nochmal.

for /f "delims=" %%i in ('dir /Ad /b /o-D /o: "j:\datasave\??.??.20??"') do call :loop "%%i"

Sorry für das e: - j: Chaos. j: ist das Laufwerk auf dem Einsatz-PC, mit e: hab ich es woanders ausprobiert weil j: belegt war. Und beim editieren ist ein e: übergeblieben, schäm...

flic
Bitte warten ..
Mitglied: Biber
26.09.2006 um 15:45 Uhr
...deshalb auch frühzeitig angewöhnen, alles was an mehr als einer Stelle im Sourcecode auftaucht, in Variablen am Anfang der Datei oder in Konfigdateien zu schreiben oder als Parameter zu übergeben.

Platz genug ist ja im Batch und zu einem Oneliner trimmen werden wir den auch nicht mehr, also was soll der Geiz:
01.
Set srcfiles="j:\datasave\??.??.20??"  
02.
...
Diese Zeile halt an den Anfang der Datei, dann brauchst Du nur an einer Stelle anpassen.

Ich setz den Beitrag mal auf "gelöst" - ist ok für Dich, denke ich.

Gruß
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen
Frage von FrenscheBatch & Shell9 Kommentare

Hallo ich möchte eine Batch erstellen, in der ein Befehl ausgeführt wird und von dort aus eine bestimmte Zeile ...

Batch & Shell
Batch zum durchsuchen eines Verzeichnisses inkl. löschen
gelöst Frage von zeroblue2005Batch & Shell4 Kommentare

Hallo Zusammen, ich weiß garnicht, ob man das was ich vorhabe überhaupt so lösen kann aber ich lege einfach ...

Batch & Shell
Batch. Die erste Zeile bei CSV Ausgabe händisch bestimmen
gelöst Frage von BatchAnfaenger91Batch & Shell2 Kommentare

Hallo ihr Lieben, ich arbeite seit neusten mit Batch und habe gemerkt das es garnicht so schwer ist wenn ...

Batch & Shell
Alte Verzeichnisse löschen via Batch
gelöst Frage von synapsenstauBatch & Shell2 Kommentare

Ich habe einen TMP Ordner, in dem Ordner, die älter als 2 Wochen, gelöscht werden sollen. Die Batch soll ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 34 MinutenViren und Trojaner

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 4 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell8 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...