Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dateien zählen via Batch-Kommando

Tipp Entwicklung Batch & Shell

Mitglied: BlueBones

BlueBones (Level 1) - Jetzt verbinden

10.01.2010, aktualisiert 18.10.2012, 12023 Aufrufe, 20 Kommentare, 1 Danke

Kam immer wieder mal vor, dass ich grobe Verzeichnis-Vergleiche gebraucht habe.

Bspw. in großen mp3-Ordnern und anschl. in den Backups. Lässt sich ohne großes Aufsehen per Batch machen.
Habe das Ding "count.bat" genannt und es in meinen registrierten Pfad gelegt.
Vielleicht kann's ja jemand brauchen -oder noch besser: vielleicht hat jemand einen Verbesserungsvorschlag!?

01.
@ECHO OFF 
02.
SETLOCAL 
03.
SET COUNT= 
04.
SET NRCOUNT= 
05.
IF %1.==. (GOTO :ASK) ELSE GOTO :RUN 
06.
 
07.
:ASK 
08.
SET /P COUNT=Pfad angeben:  
09.
IF (%COUNT%)==() ( 
10.
	ECHO Keinen Pfad angegeben. 
11.
	GOTO :END 
12.
13.
GOTO :WORK 
14.
 
15.
:RUN 
16.
SET COUNT=%1 
17.
 
18.
:WORK 
19.
SET STRTCNT=%TIME:~0,8% 
20.
SET LOG=%NRCOUNT%_%DATE:~0,6%%DATE:~8,2%.count 
21.
 
22.
FOR /F "DELIMS= " %%i in ('DIR "%COUNT%" /S /A-D^|find "Datei(en)"') DO SET NRCOUNT=%%i 
23.
ECHO Ergebnis: %NRCOUNT% Dateien (%COUNT%) 
24.
CD /D "%COUNT%" 
25.
ECHO Beginn:   %STRTCNT% Uhr>> "%LOG%" 
26.
ECHO Ende:     %TIME:~0,8% Uhr>> "%LOG%" 
27.
ECHO Ergebnis: %NRCOUNT% Dateien (%COUNT%)>> "%LOG%" 
28.
 
29.
:END 
30.
ENDLOCAL
Have fun!


[Edit Biber] Codetags nachgetragen. [/Edit]
Mitglied: bastla
11.01.2010 um 00:42 Uhr
Hallo BlueBones und willkommen im Forum!

Netter Einstieg, gleich einmal einen Tipp zu posten ...

Bis auf die Tatsache, dass %NRCOUNT% im Namen der Logdatei verwendet wird, aber zu diesem Zeitpunkt noch leer ist (bzw gar nicht existiert), wäre mir kein Fehler aufgefallen. Wozu nimmst Du übrigens das Ausführungsdatum in den Namen der Logdatei auf, wenn es ohnehin aus dem Inhalt ersichtlich ist? Wenn denn das Datum verwendet wird, würde ich eher zur Schreibweise "JJJJ-MM-TT" tendieren (ist leichter zu sortieren).

Unter diesem Aspekt (und etwas besser abgesichert sowie ein wenig gestrafft) würde ich folgende Schreibweise wählen:
01.
@ECHO OFF & SETLOCAL 
02.
SET "COUNT=%~1" 
03.
SET NRCOUNT=0 
04.
IF NOT DEFINED COUNT GOTO :ASK 
05.
IF EXIST "%COUNT%\" GOTO :WORK 
06.
 
07.
:ASK 
08.
SET /P COUNT=Pfad angeben: 
09.
IF NOT DEFINED COUNT ECHO Keinen Pfad angegeben. & GOTO :EOF 
10.
IF NOT EXIST "%COUNT%\" ECHO Keinen gueltigen Pfad angegeben. & GOTO :EOF 
11.
 
12.
:WORK 
13.
SET STRTCNT=%TIME:~0,8% 
14.
SET LOG=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%.count 
15.
 
16.
CD /D "%COUNT%" 
17.
FOR /F %%i IN ('DIR /S /A-D 2^>NUL^|FIND "Datei(en)"') DO SET NRCOUNT=%%i 
18.
 
19.
ECHO Ergebnis: %NRCOUNT% Dateien (%COUNT%) 
20.
>>"%LOG%" ECHO Beginn:   %STRTCNT% Uhr 
21.
>>"%LOG%" ECHO Ende:     %TIME:~0,8% Uhr 
22.
>>"%LOG%" ECHO Ergebnis: %NRCOUNT% Dateien (%COUNT%) 
23.
>>"%LOG%" ECHO\ 
Grüße
bastla

P.S.: Für die Formatierung als "Code" siehe hier ...
Bitte warten ..
Mitglied: BlueBones
11.01.2010 um 02:59 Uhr
Uff - meine Güte! Da hab' ich ja wirklich noch Einiges zu lernen (im Grunde bin ich auch deswegen hier).

Hab' vielen Dank für Deine Mühe! Wirklich nett gemacht und tatsächlich in 'nem Test (nicht nur irgendwie) schneller.
In meinem "vorherigen Leben" im technischen Support eines Großunternehmens war ich - so wie viele andere - berufsbedingt ein bisschen faul.
Um faul bleiben, aber zeitgleich effektiver sein zu können, habe ich ein bisschen mit Batchen angefangen )
Hat mir (und meiner Gruppe) übrigens sehr geholfen!

Solche Lehrstücke wie die Deinen bringen mich da sicher weiter (damit sind auch vielel andere Beiträge gemeint).
Habe hier auch schon Einiges Nettes von Dir gesehen.
Vielen Dank nochmals dafür und * RESPEKT * (auch in Vetretung anderer hier)

Kleine Frage hätt' ich noch:
Wofür steht in Z. 17 die 2 im Ausdruck (...) ('DIR /S /A-D 2^>NUL^|FIND "Datei(en)"') (...)
... und eine kleine Antwort:
Falls sich neue (z. B. mp3-) Dateien neu in ein Verzeichnis gesellen, sehe ich zur Kontrolle die Daten der Zählung.

Du hast natürlich Recht: Der Ausdruck SET LOG=%NRCOUNT%_%DATE:~0,6%%DATE:~8,2%.count gehört DIREKT VOR die Ausgabe ins Log.
Dann bekomme ich in einem Beispiel ein Log-File, das 437_11.01.10.count heißt.
Die Uhrzeiten sind nur für Info-Zwecke (Im Root meiner MP3-Freigabe gibt es immer mehr Dateien)
Es gibt doch sicher die Möglichkeit, dass das Skript alle Dateien nicht (!) mitzählt, die *.count heißen, oder?

"Servus!" aus der Nähe von München!
Bitte warten ..
Mitglied: TheDarkLord
11.01.2010 um 09:33 Uhr
Hallo

Zitat von BlueBones:
[...]
Wofür steht in Z. 17 die 2 im Ausdruck (...) ('DIR /S /A-D 2^>NUL^|FIND "Datei(en)"') (...)
[...]
Soweit ich weiss, ist das eine Maskierung, damit die Fehlermeldung "Keine Dateien gefunden" unterdrückt wird, falls Du mal einen leeren Pfad angibst, oder Bastla?

Zitat von BlueBones:
[...]
Es gibt doch sicher die Möglichkeit, dass das Skript alle Dateien nicht (!) mitzählt, die *.count heißen, oder?
[...]
01.
@ECHO OFF & SETLOCAL 
02.
SET "COUNT=%~1" 
03.
SET EXCLUDE=0 
04.
SET NRCOUNT=0 
05.
SET NRCOUNT2=0 
06.
SET GESAMT=0 
07.
SET EXCLUDE=0 
08.
IF NOT DEFINED COUNT GOTO :ASK 
09.
IF EXIST "%COUNT%\" GOTO :WORK 
10.
 
11.
:ASK 
12.
SET /P COUNT=Pfad angeben: 
13.
IF NOT DEFINED COUNT ECHO Keinen Pfad angegeben. & GOTO :EOF 
14.
IF NOT EXIST "%COUNT%\" ECHO Keinen gueltigen Pfad angegeben. & GOTO :EOF 
15.
 
16.
:WORK 
17.
SET STRTCNT=%TIME:~0,8% 
18.
SET LOG=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%.count 
19.
 
20.
SET EXCLUDE=%COUNT%\*.count  
21.
FOR /F %%i IN ('DIR %COUNT% /S /A-D 2^>NUL^|FIND "Datei(en)"') DO SET NRCOUNT=%%i 
22.
FOR /F %%j IN ('DIR %EXCLUDE% /S /A-D 2^>NUL^|FIND "Datei(en)"') DO SET NRCOUNT2=%%j 
23.
SET /A GESAMT=%NRCOUNT%-%NRCOUNT2% 
24.
 
25.
ECHO Ergebnis: %GESAMT% Dateien (%COUNT%) 
26.
>>"%LOG%" ECHO Beginn:   %STRTCNT% Uhr 
27.
>>"%LOG%" ECHO Ende:     %TIME:~0,8% Uhr 
28.
>>"%LOG%" ECHO Ergebnis: %GESAMT% Dateien (%COUNT%) 
29.
>>"%LOG%" ECHO\ 
Zeile 20 setzt ne zweite Variable mit dem vorher eingegebenen Pfad und *.count als Endung, also z.B. c:\windows\*.count
Zeile 22 zählt alle *.count Dateien und speichert die in NRCOUNT2
Zeile 23 zieht NRCOUT2 von NRCOUT ab

Eigentlich also recht simples Prinzip:
Erst werden ALLE Dateien gezählt, dann werden alle *.count Dateien gezählt und diese von der Gesamtmenge dann abgezogen.
Habe es mit c:\windows und *.bmp gestestet: Funktioniert sowohl mit Aufruf ohne Argument, dann wird nach Pfad gefragt und gerechnet, als auch mit übergebenem Pfad als Argument!

Gruß Dark
Bitte warten ..
Mitglied: Biber
11.01.2010 um 10:22 Uhr
Moin BlueBones,

willkommen im Forum.

Eine Alternative zum zweimaligen Zählen der Dateien und Differenzbildung wäre ein "Verstecken" der *.count-Dateien vor dem normalen DIR-Befehl.

Das ließe sich mit einer weiteren (neuen letzten) Halbzeile lösen:
attrib +h %log%
Damit bekommt die Datei %log% das Attribut "hidden" und ist für alle DIR-Wildcard-Abfragen ausgeblendet, wird also bei "DIR /s /A-d" nicht mitgezählt.
Bei namentlich exakten Zugriffen wie z.b. "IF EXIST %log% .." ist das Verhalten aber wie bei allen anderen Dateien auch.

Noch einfacher ist es natürlich, wenn du die (ohnehin nur temporär interessante) %log%-Datei immer ins %Temp%-Verzeichnis schreiben lässt.
Dann wird sie nie mitgezählt, außer in dem Fall, dass dich die %temp%-Dateienanzahl interessiert. Und dann wäre es ja korrekt.

BTW, die Datums-Ableitung würde bei mir (WIN XP SP2) ein bisschen putzige Ergebnisse liefern (Demo am CMD-Prompt):
>SET LOG=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%.count 
 
(=10:07:33  D:\temp=) 
>echo [%date%] [%log%] 
[11.01.10] [1.10-1.-11.count]
Grüße
Biber
Bitte warten ..
Mitglied: TheDarkLord
11.01.2010 um 10:30 Uhr
So gehts natürlich auch
Ursprünglich hatte ich das mit dem zweiten Zählen so gedacht, dass man z.B. einen bestimmten Dateityp nicht gezählt haben möchte, wie z.B. alles außer BMP oder alles ausser EXE etc pp.
Und die alle vorher zu verstecken und danach wieder zu "entstecken" ist ja nun doch recht aufwändig!
Aber in diesem Fall ist Dein Vorschlag natürlich der sehr viel schönere und elegantere.

Ist denn die Log-Datei nur temprär interessant? Er lässt sie doch mit >> immer erweitern, also hatte ich angenommen, dass diese bestehen bleiben soll und nicht wieder gelöscht wird. Deshalb hatte ich sie ja auch "auszählen" lassen und nicht in %temp% erstellen lassen

Gruß Dark
Bitte warten ..
Mitglied: Biber
11.01.2010 um 10:43 Uhr
Moin Dunkellurch,

ich gehe davon aus, dass diese %log%-Datei nur temporär interessant ist, weil die ja einen Tagesstempel erhält.
Und eigentlich kenne ich in meinem Verwandten- und Bekanntenkreis niemanden, der Vergleichsstudien oder Statistiken darüber führt, wieviele Dateien er/sie am 5.1.2010, am 8.1.2010 und am 11.1.2010 im Verzeichnis e:\schnipsel oder f:\neues-aus-bullerbü gehabt hat.
Und erst recht nicht, wieviele es am 11.1.2010 morgens, mittags und abends waren.
Und du kannst mir glauben, da sind schon einige ErbsenzählerInnen dabei in diesem Zirkel.

Grüße
Biber
Bitte warten ..
Mitglied: TheDarkLord
11.01.2010 um 10:44 Uhr
xDDDD ok Du hast mich überzeugt - das habe ich nicht bedacht und beim näheren nachdenken würde mich das auch nicht wirklich interessieren
Bitte warten ..
Mitglied: BlueBones
11.01.2010 um 12:23 Uhr
Servus zusammen,

es ist erstaunlich sehen zu können, wie man sich hier um selbst die kleinsten Belange/Belanglosigkeiten rührend kümmert.
Namentlich an die Herrschaften "bastla", "Biber" und "TheDarkLord" meinen vebindlichsten Dank für die Mühen und die offenkundige Bereitschaft auch Newbies wie mich bei seinen ersten (wirklichen) Schritten zu unterstützen.

Das Einzige, das mich nun im Nachhinein ärgert, ist der Umstand, dass ich nicht schon viel viel früher hier aufgeschlagen bin, um mein Admin-Leben zu erleichtern bzw. meinen Horizont etwas zu erweitern. Aber das ist ja nun - Gott Lob! - in Arbeit

Ich werde mir die Tutorials reinziehen und bin natürlich auch für weitere interessante Links dankbar.

Best wishes - BlueBones
Bitte warten ..
Mitglied: BlueBones
11.01.2010 um 14:44 Uhr
Noch 'ne kleine Anmerkung:
Habe mich natürlich nicht hingesetzt und das Ding gebaut, um Verz. mit ein paar Dateien grob zu zählen.
In meiner MP3-Freigabe sind's inzwischen ca. 80.000 Dateien. Da ich backup'e, vergleiche ich in groben Zügen Quelle und Ziel.
Darum geht's

Jedenfalls besten Dank an alle hier! Bringt mich schon mal weiter!

Beste Wünsche an alle (nicht nur für dieses neue Jahr)!

Gruß - Bluebones
Bitte warten ..
Mitglied: bastla
11.01.2010, aktualisiert 18.10.2012
@Biber
BTW, die Datums-Ableitung würde bei mir (WIN XP SP2) ein bisschen putzige Ergebnisse liefern
Wenn Du auch so genügsam bist und Dir noch nicht einmal 4-stelllige Jahreszahlen leistest ... Mit
01.
IF %DATE:~-3,1%==. (SET "DATUM=%DATE:~-2%-%DATE:~-5,2%-%DATE:~-8,2%") ELSE (SET "DATUM=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%") 
02.
SET LOG=%DATUM%.count
sollte es dann eigentlich allen recht getan sein ...

... ansonsten wüsste ich ein sehr empfehlenswertes Tutorial zu diesem Thema.
Damit bekommt die Datei %log% das Attribut "hidden" und ist für alle DIR-Wildcard-Abfragen ausgeblendet, wird also bei "DIR /s /A-d" nicht mitgezählt.
Kann ich so nicht bestätigen (obwohl auch bei mir XP SP2) - durch "/A-d" werden schließlich nur Verzeichnisse von der Anzeige/Zählung ausgeschlossen; es müsste demnach schon ein "/A-d-h" sein ...
@TheDarkLord
Zum Thema "2>NUL"
Soweit ich weiss, ist das eine Maskierung, damit die Fehlermeldung "Keine Dateien gefunden" unterdrückt wird, falls Du mal einen leeren Pfad angibst
Genau genommen ist es die Umleitung der Fehlermeldung "Datei nicht gefunden" (die auf Kanal 2 = STDERR ausgegeben wird) für den Fall, dass im oder unter dem angegebenen Pfad keine Dateien enthalten sind (was Du vermutlich auch so gemeint hast).

Grüße
bastla
Bitte warten ..
Mitglied: bastla
11.01.2010 um 15:34 Uhr
Hallo BlueBones!

Es ist immer wieder erfreulich, User hier zu treffen, die tatsächlich Interesse am Scripten/Batchen haben und lernen und auch selbst etwas beitragen wollen - daher: You're welcome ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.01.2010, aktualisiert 18.10.2012
Moin bastla,

Zitat von bastla:
@Biber
> BTW, die Datums-Ableitung würde bei mir (WIN XP SP2) ein bisschen putzige Ergebnisse liefern
Wenn Du auch so genügsam bist und Dir noch nicht einmal 4-stelllige Jahreszahlen leistest ...
Bringt doch nix.... auf meiner EC-Karte hatte ich das Jahr 2010 vierstellig..... und?
War es dadurch lesbarer?

IF %DATE:~-3,1%==. (SET "DATUM=%DATE:~-2%-%DATE:~-5,2%-%DATE:~-8,2%") ELSE (SET "DATUM=%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%")
Genau wegen einem derartigen Gestrunkele halten viele Newbies das Batchen für etwas total Archaisches.... Muster in Lochkarten beißen oder so..*gg

... ansonsten wüsste ich ein sehr empfehlenswertes Tutorial zu diesem Thema.
Ja nee.... im Prinzip schon....
Aber in diesem Fall würde mein Namenermittlungsalgorithmus ohnehin lauten "Set "Log=con" ...
...sprich ich will es eigentlich immer nur auf dem Bildschirm haben zum "JETZT mal schnell draufgucken"
und sollte ich es jemals dauerhaft haben wollen, DANN leite ich das Ergebnis des Count.cmd-Batches um mit "> irgendne.log"...
> Damit bekommt die Datei %log% das Attribut "hidden" und ist für alle DIR-Wildcard-Abfragen ausgeblendet, wird
also bei "DIR /s /A-d" nicht mitgezählt.
Kann ich so nicht bestätigen (obwohl auch bei mir XP SP2) - durch "/A-d" werden schließlich nur Verzeichnisse
von der Anzeige/Zählung ausgeschlossen; es müsste demnach schon ein "/A-d-h" sein ...
Jepp, stimmt.... das war zwar mein erster geposteter ungetesteter Batch-Tipp in diesem Jahr und somit auch der einzige falsche.
Andererseits ist damit meine Jahresquote bei 100 Prozent fehlerhafte Tipps....*grmpf*
Ich hatte in der Tat nur das Ergebnis eines "Dir /b ..." (also OHNE Attributeingrenzung mit /a) vor Augen und nix überprüft.

Also zusammengefasel^H^H zusammengefasst

Ich würde es gar nicht in einer .count-Datei persistieren. Sondern nur auf dem Monitor lesen wollen.
--> wenn ich aber FDPartig meine Meinung um 180 Grad drehen sollte und doch eine Datei anlegen würde
------> würde ich die niemals nicht in dem selben Verzeichnis anlegen wollen in dem ich Dateien zähle
-----------> Wenn ich aber eine weitere Westerwelle mache und doch die Datei dort speichere wo ich Dateien zähle
---------------> dann müsste ich mir einen abbrechen mit Attribute setzen + Attribute ausblenden und der ganze Batch wäre so stringent und spielerisch elegant wie die Tigerentenkoalition.

@BlueBones
Nein, keine Angst, wir machen hier nicht um jeden Mehrzeiler so ein Aufhebens..*lüüüüüüüüüg*

Grüße
Biber
Bitte warten ..
Mitglied: bastla
11.01.2010 um 17:10 Uhr
@Biber
Abgesehen davon, dass ich ohnehin nicht einfach aus Prinzip zum Widerspruch neige, würde mir ein solcher hinsichtlich Deiner Argumente auch nicht wirklich leicht fallen (wobei eine erste zarte Hinterfragung der Sinnhaftigkeit zumindest des Datums im Dateinamen sogar schon bei meinem ersten Kommentar oben zu finden wäre) ...

... aber andererseits gilt auch hier (zumindest für mich) einmal mehr: Wir spielen ja nur ...

Grüße
bastla
Bitte warten ..
Mitglied: BlueBones
11.01.2010 um 18:37 Uhr
Ursrünglicher Hintergrund das Ganzen waren ja nicht grobe Vergleiche von Quelle und Ziel (trotz wirklich großer privater Backups wie eingangs erwähnt), sondern der schnelle (ganz wichtig!) Vergleich zwischen aktualisierten und nicht aktualisierten CID-Bäumen auf Code-Servern, in denen die verschalten Produkte herumliegen.
Ein robocpy-Job wäre viel zeitaufwändiger und mit /MIR hat man schon einiges Übel angerichtet und bei /S /E bläht sich der CID-Baum natürlich auf.
Zu allem Übel sind in den zentralen StO die CID-Verzeichnisse nicht immer gepflegt und somit auf unterschiedlichem Stand Je nach Großwetterlage
"Na, dann mach' 'ma...!" heißt's dann nur. Danke schön!

Halbwertszeiten verschiedener Produkte werden immer kürzer heutzutage. Das ist Euch sicher nicht neu. Einfach löschen kannste nicht, weil immer Laptops unterwegs sind, die noch die Vor-Vor-Version haben und erst mal ein Update auf die Vor-Version brauchen usw. usf.

Nachdem ich mir nun doch Einiges anlesen konnte, hab' ich hier nun die Endversion, mit der ich gut zurechtkomme.
Die Log-Files brauche ich tatsächlich im demjenigen Verzeichnis, in dem ich gezählt habe, um zu sehen, ob eine Veränderung stattfand (erst dann geh' ich ans Eingemachte) und ich kann meinen "Master-Code-Baum" ohne Sorge zusammenbasteln. Ein- bis zweimal im Monat gibt es neue Release oder Relase-Updates oder eben auch Hotfixe.

ICH DANKE EUCH FÜR DIE PROMPTE HILFE UND DAS ZUR VERFÜGUNG GESTELLTE KNOWHOW.
Ich gebe nicht auf und mache weiter
Bitte warten ..
Mitglied: zensbert
27.01.2010 um 20:37 Uhr
Halloi!! Habe mal wieder nen Special-Wunsch..

Wie zähle ich die Ordner in einem Pfad ohne Unterordner in einem Verzeichnis?

Danke,
Thomas
Bitte warten ..
Mitglied: bastla
27.01.2010 um 20:49 Uhr
Hallo chizophren!

So ganz sicher bin ich mir ja nicht, Deinen Wunsch verstanden zu haben, aber falls Du nur wissen willst, wie sich die Anzahl der unmittelbaren Unterordner eines gegebenen Ordners ermitteln lässt, dann etwa so:
01.
@echo off & setlocal 
02.
set "Pfad=D:\Dein Pfad" 
03.
 
04.
if not exist "%Pfad%\" echo "%Pfad%" nicht gefunden! & goto :eof 
05.
set /a Root=0 
06.
for %%i in ("%Pfad%") do if "%%~nxi"=="" set /a Root=2 
07.
for /f %%i in ('dir /ad "%Pfad%"') do set Ordner=%%i 
08.
set /a Ordner=%Ordner%-2+%Root% 
09.
echo %Ordner%
Grüße
bastla

[Edit] Kleinere Ergänzungen nachgereicht [/Edit]
Bitte warten ..
Mitglied: zensbert
27.01.2010 um 21:18 Uhr
dankeschön, hast mir wie immer geholfen!!
Bitte warten ..
Mitglied: Biber
27.01.2010 um 21:19 Uhr
@bastla

Würde nicht ein einfaches
for /f %i in ('dir /ad d:\temp ^|find "Verzeichnis(se)"') do @echo %i 
39
...reichen? Oder muss es wirklich "gezählt" werden?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
27.01.2010 um 21:22 Uhr
@Biber
"Gezählt" habe ich ja auch nicht, sondern nur "." und ".." zu ignorieren versucht - allerdings lässt sich durch das "find" natürlich die Anzahl der "set" auf 1 reduzieren ...

Aber: Da ich ja nun auch nicht mehr der Schnellste bin, war das Ganze eigentlich noch "work in progress" ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
27.01.2010 um 21:53 Uhr
Moin bastla,

::: war das Ganze eigentlich noch "work in progress" .
Ist bei mir ja auch nicht anders. Bei meinem Schnellschuss ist die Zahl "39" auch [normalerweise] die Zahl der Unterverzeichnisse inklusive This und Parent bzw Pünktchen und Anton.

Eigentlich muss ich ebenfalls "." und ".." rausrechnen mit "Set /a -2...." ..... eigentlich....

Gilt aber nur nur, wenn es kein Root-Verzeichnis, kein "Dir /ad C:\" ist.... da gibt es weder "." noch ".."
[Oder aber, wenn ein irrwitziger Anwender die "." und ".."-Verzeichnisse per Registry-Eintrag unterdrückt.... okay, Wahrscheinlichkeit < 0,06%]

So oder so - dein Ansatz ist bei nochmaligem Hingucken doch der Zuverlässige... ich ziehe meine Frage zurück

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mehrere PDF-Dateien per Batch zusammenfügen (1)

Frage von Grimmli zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...