Huwy Geschrieben 18. September 2008 Teilen Geschrieben 18. September 2008 Hi! Ich habe ein Problem. Ich bin ein absoluter Neuling mit Batch-Dateien und MS-DOS-Befehlen. Ich hab zum 1.9. eine Ausbildung als Fachinformatiker begonnen und hab von meinem Ausbilder eine Aufgabe (die ich allein durch Selbststudium mit 0 Vorkenntnissen erledigen soll =( ) bekommen. Ich soll eine Batch-Datei schreiben, die die Speicherfresser eines Netzwerklaufwerkes findent. Im Detail soll das so aussehen, dass diese Datei ein Textdokument auswirft, dass alle Dateien dieses Laufwerkes nach Größe sortiert anzeigt. Nun habe ich mich schon 2 Tage damit beschäftigt und ich komme auf keinen grünen Zweig. Ich hab mit (wenn ich es jetz auswendig richtig hinbekomme) "dir /s/a-d/o-s" alle Dateien nach Speichergröße sortiert. Allerdings nur in den Verzeichnissen. Mein Ausbilder will allerdings, dass alle Dateien nach Größe sortiert in einer Liste auftauchen - trotzdem aber mit Pfadangabe. Wenn ich jetz aber einen Filter anwende und nur noch alle Dateien angezeigt bekomme, kann ich die trotzdem nicht nach Größe ordnen (zb find /v "Verzeichnis" - dann werden schon mal alle Zeilen mit Verzeichnis gelöscht usw). Mal abgesehen davon, dass mir der Pfad auch nicht mehr angezeigt wird. Das größte Problem ist nun, dass mein Ausbilder krank geschrieben ist für 2 Wochen und ich danach eigtl schon Ergebnisse liefern wollte. Ich hab meinen Azubi-Kollegen gefragt, allerdings lernt er IT-Kaufmann und kennt sich mit Batch-Dateien und DOS nicht wirklich gut aus - nach eigener Aussage. Ich hoffe ich bekomme einen kleinen Anstoß durch euch - weil ich hier echt am Verzweifeln bin. Gruß Thomas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 18. September 2008 Teilen Geschrieben 18. September 2008 Mal auf die Schnelle erstellt: FOR /F "tokens=1,2,3,4,5 delims= " %i IN ('dir /S /A-D /O-S') do echo %k %l >> c:\foo.txt Vielleicht ist das ein Ansatz der dich weiterbringt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 18. September 2008 Autor Teilen Geschrieben 18. September 2008 Sowas in die Richtung habe ich auch schon ausprobiert ... aber das is ja die gleiche Auflistung, wie ich mit "dir" bekomme. Die Dateien sollen ja unabhängig von den Verzeichnissen nach Größe geordnet werden .... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. September 2008 Teilen Geschrieben 18. September 2008 ich würde das bevorzugt mittels VBS/WSH machen - vielleicht hast du ja die möglichkeit, anstelle von reinem BAT/CMD. dateien aller verzeichnisse auslesen, gesamtliste erstellen, nach grösse sortieren. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 18. September 2008 Autor Teilen Geschrieben 18. September 2008 Das habe ich mir auch schon gedacht. Aber ich hab eben keine Möglichkeut zu erfragen, ob das auch möglich ist. Denn er hat es so ausgedrückt, dass es eine Möglichkeit wäre, mich in Batch-Dateien und MS-DOS Befehle reinzuarbeiten. Naja ich danke euch für eure Hilfe =) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robby_46 Geschrieben 18. September 2008 Teilen Geschrieben 18. September 2008 (bearbeitet) DOS-Befehle Sinnlose Liste gelöscht. Habe DOS noch als Büroinformationselektroniker erlernt, den Beruf gibts nimmer genauso wie DOS. Aber wennst fragen hast send mir PN Bearbeitet 18. September 2008 von Chief Wiggum Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thanks-and-Goodbye Geschrieben 18. September 2008 Teilen Geschrieben 18. September 2008 DOS-Befehle Kannst du bitte mal erklären, was diese sinnlose Auflistung von allgemeinen DOS Befehlen soll? Hörst du dich nur gerne reden? Entweder trägst du was vernünftiges zum Thema bei oder lässt es sein! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 19. September 2008 Teilen Geschrieben 19. September 2008 (bearbeitet) Ich habe nochmal weiter probiert: cd E:\Openstreetmap\ dir /S /B /A:D >> E:\directories.txt FOR /F "tokens=1 delims= " %%i IN (E:\directories.txt) DO dir /A-D /-C /O:-S %%i | find /V "Volume" | find /V "Verzeichnis von" | find /V "Datei(en)" | find /V "Verzeichnis(se)" >> E:\files.txt FOR /F "tokens=1,2,3,4 delims= " %%i in (E:\files.txt) do echo %%k %%l >> E:\files1.txt type E:\files1.txt del E:\directories.txt E:\files.txt Das gibt dir jetzt ne Liste aller Dateien aus in Form von <Dateigroeße> <Dateiname.foo> Leider habe ich keine Ahnung wie ich die Liste noch sortieren kann. Mit "sort" gehts, soweit wie ich getestet habe, nicht. So ne Aufgabe mit klassischen Batchbefehlen zu bewältigen ist (fast) ein Ding der Unmöglichkeit. Besorg dir die Unixtools für Windows und mach es damit. find . -type f | xargs du | sort -n Bearbeitet 19. September 2008 von lupo49 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 22. September 2008 Autor Teilen Geschrieben 22. September 2008 Ich danke dir !! Aber die Aufgabe habe ich mir nicht ausgedacht Naja ich werde mich mit meinem Ausbilder unterhalten =) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 22. September 2008 Autor Teilen Geschrieben 22. September 2008 Edit: Mit einem zusätzlichen Befehl habe ich nun ein kleines Erfolgserlebnis =) Y:\>dir /s/a-d/o-s | find /v "Verzeichnis" | find /v "Datei" | find /v "Volume" | find /v "Datenträger" | cut -b 20-75 | sort /r >test.txt Das cut schneidet alles bis zur 20.Spalte ab .. das ist ca. nach der Uhrzeit =) Dadurch kann ich nach Größe sortieren ... allerdings bleibt immer noch das Problem, dass ich kein Verzeichnis angezeigt bekomme und bei einer etwas größeren Dateimenge die Zuordnung Probleme bereitet =( Ist echt schrecklich, sich das alles im Selbststudium beizubringen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 30. September 2008 Autor Teilen Geschrieben 30. September 2008 Hallo! Ich bin ein absoluter Neuling mit cmd =) Habe mir ein paar Unixtools geholt und mir einen Befehl zusammengebaut, der mir alle Verzeichnisse mit Größe ausgibt. Die Liste sieht ungefähr so aus: ... Y:\Aufgaben\Script5Datei(en)274.559Bytes Y:\Aufgaben\Script\batchtut\Batchtut2Datei(en)6.161Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Reto2Datei(en)117.258Bytes Y:\Aufgaben\Script\batchtut\Batchtut\PRECHT9Datei(en)14.251Bytes Y:\Aufgaben\Script\batchtut\Batchtut\PITTIPLA3Datei(en)28.453Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Lenz3Datei(en)25.588Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Infotec3Datei(en)38.899Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Beispiel1Datei(en)80.997Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Battips5Datei(en)128.137Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Bat-Kurs1Datei(en)94.894Bytes Y:\Aufgaben\Script\Fortschritte1Datei(en)233Bytes Y:\Aufgaben\Patchkabelbestellung1Datei(en)117.248Bytes Y:\Aufgaben\PTNetzwerk2Datei(en)30.595Bytes Y:\Aufgaben\DOT2Datei(en)2.052.096Bytes Y:\Aufgaben\WLan-Å¡berprÂfung2Datei(en)38.939Bytes ... Ich möchte jetz die Verzeichnisse nach Größe sortieren. Allerdings habe ich keine Ahnung, mit welchem Befehl ich nach der Größe am Ende der Zeile sortiere (das größte Verzeichnis zuerst). Ich kenn nur "sort /r" aber der nimmt sich ja immer den Anfang der Zeile vor. Kann man diesen Befehl irgendwie mit anderen verbinden, sodass er nach der Größe sortiert oder braucht man einen anderen Befehl. Btw - das ist mein Befehl. Ich weiß, dass die 3 sed auch nicht sehr elegant sind ^^ Y:\>dir /s/o-s/a-d | cat | sed '$d' | sed '$d' | sed '$d' | egrep -e "Datei\(en\)|Verzeichnis" | tr -d '\r\n' | tr -d " " | sed 's/Verzeichnisvon/\r\n/g' >VsGröße.txt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thanks-and-Goodbye Geschrieben 30. September 2008 Teilen Geschrieben 30. September 2008 Ein Thema, ein Thread! Ich habe das mal zusammengeführt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 30. September 2008 Autor Teilen Geschrieben 30. September 2008 Oh tut mir Leid !! Aber danke, dass du den Thread nicht gelöscht, sondern verschoben hast =) So und wieder back 2 topic ... Ich hab mich nun mal durch die Abteilung gefragt ... scheint ein sehr schwieriges Thema (zumindest unter Windows) zu sein. Ich bin nun selbst auf die Lösung dieses eines Problems gekommen. Jeder hat mir so ein Stück weit weiter helfen können Mit "sed 's/Datei(en)/ /g' " hab ich mir mal ein Leerzeichen zwischen das Verzeichnis und die Größe eingefügt. Jetz konnte ich mit "awk {print $2, $1}" die Spaltenreihenfolge verändern. An sich schon mal top ... allerdings tut sich gleich wieder das nächste Problem auf, zu dem jetz so spontan keiner eine Lösung wusste, obwohl es sicher nicht so schwer ist. ... 25.588Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Lenz3 38.899Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Infotec3 80.997Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Beispiel1 128.137Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Battips5 94.894Bytes Y:\Aufgaben\Script\batchtut\Batchtut\Bat-Kurs1 233Bytes Y:\Aufgaben\Script\Fortschritte1 117.248Bytes Y:\Aufgaben\Patchkabelbestellung1 ... Mit sort sieht er sich immer nur die erste Ziffer und nicht die komplette Zahl an. Gibt es eine Möglichkeit, dass mit einem Sortierbefehl die ganze Zahl angesehen wird? Tut mir Leid, dass ich immer so schnell poste, aber ich will mit dem Thema endlich mal weiterkommen =( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Huwy Geschrieben 9. Oktober 2008 Autor Teilen Geschrieben 9. Oktober 2008 Falls es noch jemand interessiert. Ich habe nun entgueltig eine Batchdatei, die die Speicherfresser eines Datentraegers in einer Excelliste ausspuckt. Man benötigt dazu aber die Unixtools, falls es jemand testen will =) @ECHO off set /p vstart="Bitte Datentraeger eingeben (zB C:\) " del %vstart%Endfile.xls dir %vstart% /s/a-d/b >%vstart%Dateiverzeichnisse.txt dir %vstart% /s/a-d | grep " " | sed '$d' | sed '$d' | sed '$d' | find /v "Volumeträger" | find /v "Volumeseriennummer" | find /v "Datenträger in Laufwerk %vstart%" | find /v "Verzeichnis von" | find /v "Datei(en)" | cut -b 18-36 >%vstart%DGroesse1.txt type %vstart%DGroesse1.txt | sed '1d' >%vstart%DGroesse.txt paste %vstart%DGroesse.txt %vstart%Dateiverzeichnisse.txt >%vstart%Endfile1.txt type %vstart%Endfile1.txt | sort /r >%vstart%Endfile.txt copy %vstart%Endfile.txt %vstart%Endfile.xls del %vstart%Dateiverzeichnisse.txt del %vstart%DGroesse1.txt del %vstart%DGroesse.txt del %vstart%Endfile1.txt del %vstart%Endfile.txt %vstart%Endfile.xls Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.