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
GELÖST

Mit Batch zählen

Frage Entwicklung Batch & Shell

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

19.01.2011, aktualisiert 18.10.2012, 8662 Aufrufe, 13 Kommentare

Hallo
Ich nochmal mit einem Kleinen Problem in Sachen Anzahl Dateien zählen
Wolte jetzt mal eine Batch schreiben, die anhand des änderungsdatum von Bildern, Ordner erstell, und diese dan Je nach Datum einsortiert.
(Also sicherlich nichts dramatisches für euch, aber ich wolte mich jetzt einfach mal dran versuchen)
Aber das nur vorne weg, soweit bin ich noch nicht, und da suche ich natürlich weiter wenn es soweit ist.

So mein jetziges Problem sieht wie folgt aus:
Ich will Die Anzahl der Dateien in einem Ordner X herausfinden.
Bevorzugt der Ordner, in dem die Batch Datei liegt, alles andere wäre zu umständlich mit Pfad Eingabe und so.

Hier mein Ansatz:

01.
@echo off & setlocal 
02.
Set "Pfad=%~dp0" 
03.
 
04.
::set "Pfad=C:\LOL" 
05.
echo %Pfad% 
06.
pause 
07.
for /f %%i in ('dir "%Pfad%" ^2^>nul^|find "Datei(en)"') do set /a anz+=%%i 
08.
echo Gefunden: %Anz% Dateien 
09.
 
10.
pause
Mein Problem ist jetzt, wenn ich den Pfad auf "LOL" umleite geht es, wenn ich aber den Source Pfad nehme zeigt es mir keine Datei Anzahl mehr an.
Folgende Zeile habe ich im Internet gefunden:
for /f %%i in ('dir "%Pfad%" ^2^>nul^|find "Datei(en)"') do set /a anz+=%%i
echo Gefunden: %Anz% Dateien
Würde mich mal interessieren, was da geschieht.
Falls jemand eine Anleitung kennt, die sich auf das Problem bezieht, immer her damit.
Habe eben mal auf Anleitungen geklickt, und hab mich in keinster weise zurecht gefunden, weil da irgendwie alles drin ist.

Eins noch:
Wird die Batch Datei mitgezählt, oder nicht? weil wenn diese mitgezählt wird ist es schlecht.
Aber ich denke das lässt sich mit "-1" sicher lösen, da der Dateityp beliebig bleiben soll.
Was bringt eigentlich in der ersten Zeile das setlocal? echo off ist mir schon klar, aber mit dem anderen kann ich nichts anfangen.

Mit freundlichen Grüßen
Und danke im Voraus
Power-Poler
Mitglied: micneu
19.01.2011 um 18:50 Uhr
würde dir auch ein powershell script helfen?

noch ein paar fragen, sind es nur .jpg oder auch .tif oder .png?
die soll die strucktur werden?
jahr -> monat -> tag -> bild?
wie soll es sein?
sowas könnte ich dir schnell liefern
Bitte warten ..
Mitglied: Power-Poler
19.01.2011 um 18:57 Uhr
Danke für deine Hilfe
Würde es gerne aber selbst mal versuchen.
Und wie gesagt, das ganze Sortieren soll später stattfinden.
Ich will jetzt erst mal mit der Zählung der Dateien beginnen und wie gesagt, soll der Datei Typ eigentlich irrelevant bleiben. Es soll einfach sortiert werden.
warum wäre es wichtig ob es jpg oder tif sind?
Bitte warten ..
Mitglied: micneu
19.01.2011 um 19:36 Uhr
ob du mit exif daten arbeiten kannst / willst.

hier damit kannst du die anzahl der dateien anzeigen im aktuellen verzeichniss
01.
$test = Get-ChildItem 
02.
$test.Count
Bitte warten ..
Mitglied: 60730
19.01.2011 um 19:49 Uhr
Servus
Zitat von Power-Poler:
Mein Problem ist jetzt, wenn ich den Pfad auf "LOL" umleite geht es, wenn ich aber den Source Pfad nehme zeigt es mir keine Datei Anzahl mehr an.
  • bätche sind dümmer als Brot die wissen nicht, wann Sie hart werden dürfen - daher muß man bei jedem Programm aufs grammMü genau sein.

Würde mich mal interessieren, was da geschieht.

  • Jeder einzelne der Befehle kennt den Parameter /? - schau es dir einfach mal an.
Wird die Batch Datei mitgezählt, oder nicht? weil wenn diese mitgezählt wird ist es schlecht.
  • Gegenfrage - ist die Batch in dem durchsuchten Pfad?

Aber ich denke das lässt sich mit "-1" sicher lösen, da der Dateityp beliebig bleiben soll.
  • Si Senor
Was bringt eigentlich in der ersten Zeile das setlocal? echo off ist mir schon klar, aber mit dem anderen kann ich nichts anfangen.

  • Puh - harter Tobak mit dem glasklaren echo off..

such mal in meinen Anleitungen nach @echo off....und auch deine Frage gehört zu denen, die es so nicht geben würde, wenn du echo on geschaltet hättest.
  • Set "Pfad=%~dp0" mit einem Pause zeigt dir den Unterschied zu deinem selbstgesetzten lol - ist nur ein kleiner aber gemeiner schräger \/ogel

edit - wobei es in dem Fall Wurst ist, ob der "pfad" am ende ein \ hat oder nicht - außer es gäbe sowohl ordner als auch Datei(en) mit dem Namen.

Ich kann dir nur dir /? usw wärmstens empfehlen.
/edit

Gruß
Bitte warten ..
Mitglied: Biber
19.01.2011, aktualisiert 18.10.2012
Moin Power-Puler,

ich finde es gut, dass du dich da durchbeissen und auch die einzelnen Befehle verstehen willst.

Zu dem zweiten, allgemeineren Teil deiner Fragen dazu:
Hier im Forum und auch im Bereich "Batchkrams" sind wir da quantitativ relativ gut aufgestellt - wenn du beispielsweise zu dem obigen Internet-Fundstück mal in unsere Forumssuchfunktion eingibst "FindStr Datei(en)", dann findest du 9 Fragen, 2 Anleitungen und 56 Kommentare dazu.

Und mit Abstand am Saubersten wird genau diese DIR-Ausgabe mit FOR /F-Anweisungen seziert in Friemler 5-Sterne-Tutorial zu FOR-Schleife.
[ wenn du in dieser Anleitung das zweite Vorkommnis von "Datei(en)" gefunden hast, da hast du deinen Fall in 3 Bänden mit Goldprägung.]

Wenn du dieses Tutorial durchgehechelt hast, dann nimm danach diese Zeile vom CMD-Prompt:
>@for %i in (txt bat cmd pdf) do @for /f %j in ('dir d:\temp\*.%i^|findstr "Datei(en)"') do @echo Anzahl *.%i: %j 
Anzahl *.txt: 81 
Anzahl *.bat: 32 
Anzahl *.cmd: 9 
Anzahl *.pdf: 1
... und du verstehst sofort jede einzelne Zeile.

Grüße
Biber
Bitte warten ..
Mitglied: Power-Poler
19.01.2011 um 20:05 Uhr
Jetzt geht es:
Diese Zeile hat mir gefehlt:
Set Pfad=%Pfad:~0,-1%

Dachte ich hätte es soweit schon, habe aber den befehl immer falsch geschrieben:
Set Pfad=%Pfad%:~0,-1 <-- so hatte ich es versucht.
Bitte warten ..
Mitglied: Biber
19.01.2011 um 21:34 Uhr
BTW, Power-Puler,

wenn du doch die Batch-Datei ohnehin in den Ordner, der durchgeflöht werden soll packen und dort starten willst,
dann kannst du auch solche abgedrehten akademischen Elaborate wie 'Set "Pfad=%~dp0" ' ganz weglassen
->es geht um das aktuelle Verzeichnis-> also um ein einfaches ' DIR .' oder 'DIR .\*.jpg'.
Wenn du aber kein 'SET pfad=...' mehr brauchst, dann brauchst du auch kein "SetLocal" und der ganze Batch passt schon auf viel kleinere Festplatten.

Grüße
Biber
Bitte warten ..
Mitglied: Power-Poler
20.01.2011 um 16:48 Uhr
An was für Festplatten denkst du?
Ich dachte an welche von 100GB bis 1000GB (Auf denen das Programm arbeiten soll, es soll die 100GB dan nicht anfangen zu sortieren)

Und bitte, nenn mich nicht Puler.
entweder Power-Poler, oder nur Power.
Danke

Und wie kann ich dan das DIR in eine Anzahl packen? das zeigt mir doch nur eine Liste der Dateien an.
Bitte warten ..
Mitglied: Biber
20.01.2011 um 18:26 Uhr
Moin Power-Poler,

Zitat von Power-Poler:
An was für Festplatten denkst du?
Ich dachte an welche von 100GB bis 1000GB (Auf denen das Programm arbeiten soll,
es soll die 100GB dan nicht anfangen zu sortieren)
Hast recht, da sollte die Batchdatei <i>eigentlich draufpassen, egal ob als Oneliner oder als 10-Zeiler.
Und bitte, nenn mich nicht Puler.
entweder Power-Poler, oder nur Power.
Danke
Tja, da bin ich wohl mit der Schreibweise Pooler beim Poler auf'n Poller gelaufen.
Und wie kann ich dan das DIR in eine Anzahl packen? das zeigt mir doch nur eine Liste der Dateien an.
Ägypten? Pellkartoffel? 42?
Du hattest doch diese Plauderei eröffnet mit den Worten
Folgende Zeile habe ich im Internet gefunden:
for /f %%i in ('dir "%Pfad%" ^2^>nul^|find "Datei(en)"') do set /a anz+=%%i
echo Gefunden: %Anz% Dateien

Ich dachte, da ging es um das Rausfieseln einer Dateianzahl aus der DIR-Ausgabe?
Und auf ein Tutorial, in dem das Rausfieseln von allen kleinen Perlen aus etwas Hingeworfenem
allergeduldigst beschrieben wird, hatte ich doch auch schon verwiesen weiter oben?

???

Grüße
Biber
Bitte warten ..
Mitglied: Power-Poler
20.01.2011 um 18:35 Uhr
Ja, entschuldige, hab da etwas auf dem Schlauch gestanden.
Das tut die Zeile ja schon.
Bin immer noch am durcharbeiten des tuts, und habe zumindest mal raus gefunden, wie man mit Variablen Verzögerungen umgeht.
Bitte hab etwas Geduld mit mir.
Ich melde mich dan normal, wenn ich das tut durch habe.
Eins noch.
Wie kann ich das automatische schließen der patch verhindern, bei Syntaxfehler oder so.
Kann da immer noch kurz die Fehlermeldung lesen, also was ich falsch gemacht habe, aber es geht dan sofort wider zu.
Auch mein beliebtes "Pause" hilft mir da nicht weiter.
Bitte warten ..
Mitglied: Biber
20.01.2011 um 18:44 Uhr
Moin Power-Poler,

CMD-Bätches, KiX-/VBS-/JSKleinskripte im Entwicklungsstadium werden immer getestet am CMD-Prompt/an der "Eingabeaufforderung".
Im Zweifelsfall nach "Eingabeaufforderung" in der Windows-Hilfe suchen.

Per Doppelklick von Desktop aus kannst du nichts testen.

Grüße
Biber
Bitte warten ..
Mitglied: Power-Poler
20.01.2011 um 19:04 Uhr
Danke, habs gefunden.
CMD öffnen, batch rein ziehen, Enter drücken, und Fehlermeldung bleibt stehen.
Hab nur nicht gedacht, das es für Windows einen unterschied macht, da ja bei Doppelklick auch CMD geöffnet wird.
Bitte warten ..
Mitglied: Power-Poler
22.01.2011 um 11:12 Uhr
So
Habe es endlich geschafft.
Natürlich will ich euch das Ergebnis nicht vorenthalten.
01.
@echo off & setlocal enabledelayedexpansion  
02.
Set "Pfad=%~dp0" 
03.
for /f %%i in ('dir "%Pfad%" ^2^>nul^|find "Datei(en)"') do set /a anz+=%%i 
04.
set Anz=%Anz% 
05.
echo Gefunden: %Anz% Datei(en) 
06.
echo Dateien nach Name sortieren "N" 
07.
echo Dateien nach Datum sortieren "D" 
08.
echo Falsche eingabe, erneute eingabe 
09.
 
10.
:Neu 
11.
set /p "Hallo=Was soll geschen: " 
12.
 
13.
if "%Hallo%" equ "N" goto :LOL 
14.
if "%Hallo%" equ "D" goto :Test2 
15.
goto :Neu 
16.
 
17.
 
18.
:LOL 
19.
for %%i in ("%Pfad%*") do ( 
20.
set "lol=%%~xi" 
21.
set "lol2=%%~ni" 
22.
set "lol3=!lol2!!lol!" 
23.
xcopy "%%i" "%Pfad%!lol2!\" /I 
24.
25.
 
26.
goto :EOF 
27.
 
28.
:Test2 
29.
for %%i in ("%Pfad%*") do ( 
30.
set Zeit=%%~ti 
31.
echo !Zeit! 
32.
set Zeit2=!Zeit:~0,10! 
33.
echo !Zeit2! 
34.
xcopy "%%i" "%Pfad%!Zeit2!\" /I 
35.
36.
goto :EOF 
37.
 
Hoffe habe alles richtig gemacht, und er tut auch das was er soll.
Zu der Zeile, die die Anzahl der Dateien Zählen soll, hätte ich noch eine frage, ob ich das richtig sehe:
Die Zeile Zählt ja nicht wirklich die Anzahl der Dateien, sondern nur die Wiederholungen der For schleife, also wie oft der dir Befehl Braucht, um alle Dateien zu finden, oder sehe ich das Falsch?
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Datein zählen via Batch und Berechnen (1)

Frage von Anrion zum Thema Batch & Shell ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (1)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...