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

Dateianzahl aus Ordner ausgeben

Frage Entwicklung Batch & Shell

Mitglied: domme31

domme31 (Level 1) - Jetzt verbinden

22.10.2008, aktualisiert 23.10.2008, 7125 Aufrufe, 4 Kommentare

Hallo liebe Admins,

ich habe folgendes Problem. Ich möchte aus einem Ordner aus z.B. C:\Testumgebung\temp die Anzahl der PDF Dateien in eine Variable speichern. Nun habe ich mich hier schon ein wenig umgeschaut aber keine der Themen die hätten passen können haben mit der Lösung funktioniert.

Nun hoffe ich das ihr mir dabei helfen könnt, da dies sehr wichtig ist.

LG Domme
Mitglied: bastla
22.10.2008 um 21:56 Uhr
Hallo domme31!

Etwa so:
01.
@echo off & setlocal 
02.
set Anzahl=0 
03.
for /f %%i in ('dir "C:\Testumgebung\temp\*.pdf" 2^>nul^|findstr "Datei(en)"') do set "Anzahl=%%i" 
04.
echo %Anzahl% Dateien gefunden
Grüße
bastla
Bitte warten ..
Mitglied: domme31
22.10.2008 um 22:02 Uhr
Danke für die schnelle Antwort,

funktioniert wunderbar, wenn du mir nun noch ganz kurz erklärst wieso und weshalb so und nicht anders wäre ich dir sogar sehr dankbar, möchte Batch nämlich gerne verstehen =)
Bitte warten ..
Mitglied: bastla
22.10.2008 um 22:29 Uhr
Hallo domme31!

Wenn Du an der Kommandozeile einen "dir"-Befehl eingibst, sieht die Ausgabe etwa so aus:
C:\>dir C:\Testumgebung\Temp 
 Datenträger in Laufwerk C: ist SysDisk 
 Volumeseriennummer: 1234-5678 
 
 Verzeichnis von C:\Testumgebung\Temp 
 
14.10.2008  23:20             2.413 Test016.pdf 
14.10.2008  23:20             3.067 Test015.pdf 
14.10.2008  23:20             2.355 Test014.pdf 
14.10.2008  23:20             3.385 Test013.pdf 
14.10.2008  23:12             4.003 Test017.pdf 
14.10.2008  23:12             3.641 Test011.pdf 
14.10.2008  23:12             1.739 Test010.pdf 
14.10.2008  23:12             2.853 Test009.pdf 
               8 Datei(en)         23.456 Bytes 
               0 Verzeichnis(se),  8.873.512.960 Bytes frei
Interessant ist für Deinen Zweck nur die vorletzte Zeile, daher wird diese Zeile mit "findstr" unter Verwendung des Kriteriums "Datei(en)" herausgefiltert.

Der Zusatz "2^>nul" (innerhalb einer "for"-Schleife muss das Zeichen ">" maskiert werden, was zur Schreibweise "^>" führt) sorgt dafür, dass, falls keine einzige Datei gefunden wird, die Fehlermeldung ins "Nichts" (nach "nul") umgeleitet wird (und damit "verschwindet").

Wenn Du das an der Kommandozeile nachvollziehen willst, könntest Du folgende Schreibweise verwenden:
dir C:\Testumgebung\Temp\*.pdf 2>nul|findstr "Datei(en)"
Das Ergebnis wäre dann
               8 Datei(en)         23.456 Bytes
Da aus dieser Ausgabe nur die Anzahl benötigt wird, muss die Zeile zerlegt werden. Das Werkzeug dafür ist "for". Mittels dieses Befehles kann eine Zeile anhand von "delimiters" (Trennzeichen) in "tokens" (Einzelteile) aufgeteilt werden, welche alphabetisch ab der angegebenen Variablen (üblich ist dafür %%i, es kann aber auch ein anderer Buchstabe sein) zur Verfügung stehen ("token" Nr 1 steht daher in %%i, Nr. 2 in %%j, usw).

Da standardmäßig Leerzeichen und TAB als Trennzeichen verwendet werden, muss ein solches hier nicht explizit angegeben werden, ebenso kann, da die gesuchte Anzahl gleich als erstes Element (davor befinden sich nur Leerzeichen = Trennzeichen) in der Zeile aufscheint, auf die Angabe der "token"-Nummer verzichtet werden. Vollständig sähe die Schreibweise für "for" so aus:
for /f "tokens=1 delims= " %%i in (...
Die "for"-Schleife geht alle Zeilen (das sollte in diesem Fall nur eine einzige sein) des in der Klammer angeführten Ausdruckes einzeln durch, zerlegt diese und stellt das erste Element als "%%i" zur Verfügung.

Dieser Teil der Zeile wird dann einfach der Variablen %Anzahl% zugewiesen.

Sollte keine Datei gefunden worden sein, ist in der "for"-Schleife auch keine Ergebniszeile zu verarbeiten und der Wert von %Anzahl% wird nicht neu gesetzt - es bleibt also beim in der vorhergehenden Batchzeile festgelegten Wert von 0.

Grüße
bastla

P.S.: Wenn Du Dich genauer über einzelne Befehle informieren willst, einfach an der Kommandozeile "help Befehl" oder "Befehl /?", also etwa "for /?", eingeben ...
Bitte warten ..
Mitglied: domme31
23.10.2008 um 14:56 Uhr
Okay danke sehr gut erklärt hat alles wunderbar funktioniert und vielen dank nochmal für die erklärung !

LG Domme
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Netzwerklaufwerk Ordner durchsuchen und Dateipfade ausgeben (Größe, Änderungsdatum)
Frage von sw33d1337Batch & Shell2 Kommentare

Hallo zusammen, ich habe mich noch nicht groß mit Batch Programmierung auseinandergesetzt, aber eventuell könnt ihr mir weiterhelfen. Problemstellung: ...

Batch & Shell
Ordner mit Teilnamen finden und kompletten Pfad ausgeben
gelöst Frage von Pago159Batch & Shell3 Kommentare

Hallo Kollegen, ich habe mal wieder ein kleines Batch Problem. Ich suche auf mehreren Geräten nach Benutzerordnern z.B. "XY*" ...

Batch & Shell
Dateipfad ausgeben
gelöst Frage von tegwertBatch & Shell2 Kommentare

Hallo zusammen! Ich nutze folgende Zeile zur Ermittlung der Dateipfade einer bestimmten mehrfach vorkommenden Datei: for %%a in (F ...

Batch & Shell
PowerShell Array in Textdatei ausgeben
gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hallo, der Titel hört sich nicht allzu schwer an. Ich habe eine Foreach Schleife die Durchläuft und ein Array ...

Neue Wissensbeiträge
Internet

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

Information von Penny.Cilin vor 2 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 3 TagenWebbrowser7 Kommentare

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

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

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

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...