amdinside Geschrieben 16. März 2009 Melden Share Geschrieben 16. März 2009 Hi All, weiss jemand wie man mit Boardmitteln (Batch) oder Kommandozeilentools in einem Verzeichniss prüfen kann, wieviele Dateien darin sind und dann zb alle was mehr ist wie 20 löschen kann ? ZB sind mehr als 20 Dateien in C:\1 , wenn ja lösche alle älteren. Bei XDEL und robocopy hab ich nichts dergleichen gefunden. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Admin Gandalf Geschrieben 16. März 2009 Admin Melden Share Geschrieben 16. März 2009 Hier mal eine BAT die sowas macht. @ECHO OFF Dir c:\temp\*.* | FIND "File(s)" | SETWORD 1 > TMP.BAT CALL TMP.BAT DelFiles IF %Delfiles% GTR 20 goto :Delete_Files DEL TMP.BAT /Q exit :Delete_Files Del c:\Temp\testdir\*.* /Q DEL TMP.BAT /Q exit Bei einem deutschen Betriebssystem musst du hier statt "File(s)" "Datei(en)" reinschreiben. Ich hab hier die Verzeichnisse fest drin ...war ja nur ein Test. Der BATCH fragt mittels DIR das Verzeichnis Temp ab und danach wird nach dem Ergebnis gesucht und SETWORD schreibt es in die TMP.BAT....die kannst du dann mittels CALL zum setzen einer Variable aufrufen und prüfen. Hier noch das Tool "SETWORD" und die Beschreibung davon / Tool muss in System32-Verzeichnis. =========== SETWORD.COM - Systeminformationen ====== Lektion #20 === Häufigstes Problem bei der Programmierung von Batch-Abläufen ist die Verwendung von System- und Datei-Informationen: Tagesdatum und Uhrzeit, Volume Label, aktuelles Verzeichnis oder Laufwerk, Verzeichnispfad einer Datei, Dateidatum und so weiter. DOS bietet hier leider keine fertigen Lösungen an. Sofern man nicht mit 4DOS arbeitet, gibt es folgende Möglichkeiten: (1) reine Batchlösungen, die meist recht aufwendig und schwer zu durchschauen sind, (2) kleine Utilities, von denen sich mit der Zeit eine ganze Menge ansammeln, (3) Multifunktionsprogramme, also eine Zusammenfassung vieler Funktionen in einem Programm. Hier soll eine Lösung vorgestellt werden, die eine Mischung aus allen dreien ist. Dazu wird ein kleines Programm (SETWORD.COM) in Verbindung mit normalen DOS-Funktionen und Umleitungen/PIPEs eingesetzt, so daß auch ein Lerneffekt für diesen Batchkurs dabei abfällt. Das nötige Programmm wird (als "DEBUG-Skript", s.u.) gleich mitgeliefert. SETWORD.COM liest per PIPE (|) den DOS-Output von Befehlen wie DIR, VOL, DATE, TIME etc. und entnimmt daraus das soundsovielte Wort - auch über mehrere Zeilen hinweg! Die Position des Wortes (1...) wird zu SETWORD angegeben - ohne Angabe gilt 1. Beispiel: VOL A: | SETWORD 6 Der Befehl VOL liefert z.B.: Datenträger in Laufwerk A: ist BACKUP -----1----- 2- ----3--- 4- -5- --6--- Damit nun das Wort im BAT-Ablauf verwendet werden kann, schreibt SETWORD einen entsprechenden SET-Befehl (per > Umleitung) in eine temporäre BAT-Datei, die dann per CALL ausgeführt wird, z.B.: VOL A: | SETWORD 6 > TMP.BAT In der TMP.BAT steht dann folgendes (gem. obigem Beispiel): SET %1=BACKUP Anstelle eines Variablennamens wird immer %1 geschrieben, d.h. der Name ist selbst variabel und wird beim CALL als Parameter angegeben, also: VOL A: | SETWORD 6 > TMP.BAT call TMP.BAT LABEL :: ^^^^^--------- Name der Variablen Nun kann %LABEL% abgefragt oder sonstwie verwendet werden. Ohne Umleitung der Ausgabe erscheint der SET-Befehl auf dem Bild- schirm - zum Testen genau das Richtige. Ausprobieren: VOL | SETWORD 4 (aktuelles Laufwerk) CD | SETWORD 1 (aktuelles Verzeichnis) DIR Datei | SETWORD 11 (Pfad einer Datei) TRUENAME Datei | SETWORD (Datei mit komplettem Pfad) Und was passiert, wenn SETWORD keine Eingabe per PIPE erhält? Dann wird die Eingabe halt von der Tastatur eingelesen, z.B.: SETWORD > TMP.BAT call TMP.BAT INPUT Verzeichnis der TMP.BAT ----------------------- In den Beispielen wurde die TMP.BAT im aktuellen Verzeichnis angelegt, und sollte daher anschließend wieder gelöscht werden. Das kann man sich sparen, wenn immer das Verzeichnis %TEMP% verwendet wird, z.B.: CD | SETWORD > %temp%\TMP.BAT call %temp%\TMP UDIR Zum Programm SETWORD -------------------- Als Trennzeichen zwischen Wörtern in der Eingabedatei gelten Leerzeichen, Komma, Semikolon, Gleichheitszeichen und CR,LF (Zeilenabschluß). Max. Größe der Datei: 60 KB. Weitere Anwendungen ------------------- DIR liefert eine Menge Informationen. Neben dem aktuellen Laufwerk kann für jede beliebige Datei z.B. der Verzeichnispfad, der Name ohne Extension, nur Extension, Datei-Datum und -Größe ermittelt werden. Bei Bedarf läßt sich auch eine bestimmte Zeile per FIND herausziehen (hier um die Anzahl Dateien zu ermitteln): DIR *.GIF | FIND "Datei(en)" | SETWORD 1 Bei DATE und TIME hält DOS an und wartet auf eine Eingabe oder RETURN. Dieses RETURN wird daher per ECHO an DATE/TIME gepiped: ECHO.| DATE | SETWORD 4 DOS-Version ----------- Die Beispiele oben gelten für MS-DOS 5.0 (deutsch). Abweichungen im Output bei anderen Versionen möglich, also bitte ausprobieren und abzählen... Und hier ist das Proggi: --------------------------------------------schnipp--------------- e100 BE 81 0 AC " e118 "s"6 F7 E1 1 D8 "s"ED "P"BE A2 1 "+"DB 89 F2 B9 0 F0 B4 "?"CD e12E "!"8B D8 C6 0 1A B9 7 0 BA 9B 1 BB 1 0 B4 40 CD "!]"85 ED "u" e145 1 "E+"C9 AC " e160 "t"E7 "N"89 F2 80 " e17B "t"8 " e191 "!"B4 ">"CD "!"B8 0 "L"CD "!set %1=" n SETWORD.COM rCX A2 w q --------------------------------------------schnapp--------------- SETWORD_TESTBATCH.zip Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
amdinside Geschrieben 16. März 2009 Autor Melden Share Geschrieben 16. März 2009 Dank Dir...dann les ich das jetzt mal und teste.... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
amdinside Geschrieben 16. März 2009 Autor Melden Share Geschrieben 16. März 2009 So...rennt fettes Danke an Gandal ! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Admin Gandalf Geschrieben 16. März 2009 Admin Melden Share Geschrieben 16. März 2009 So...rennt fettes Danke an Gandal ! Immer gerne... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.