Zum Inhalt springen

Speicherfresser finden


Huwy

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von lupo49
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 =(

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...