Discussion:
Verzeichnisgrößen per Batch-Datei
(zu alt für eine Antwort)
Tom Vollmer
2005-11-24 09:44:18 UTC
Permalink
Hallo,

ich habe ca. 20 verschiedene Verzeichnisse jeweils mit einigen
Unterverzeichnissen, deren Inhalt sich täglich verändert.

Ich möchte ermitteln, welche Gesamtgröße jedes einzelne dieser 20
Verzeichnisse (inkl. Unterverzeichnisse) belegt.

In der Ausgabe (am Besten einer Textdatei) sollte dann z.B. stehen:
Verzeichnis A belegt 140,5 MB
Verzeichnis B belegt 364,7 MB
usw...

Kann man das mit 'ner Batch realisieren?

Vielen Dank im Voraus.
Tom :-)
Herbert Kleebauer
2005-11-24 10:27:23 UTC
Permalink
Post by Tom Vollmer
ich habe ca. 20 verschiedene Verzeichnisse jeweils mit einigen
Unterverzeichnissen, deren Inhalt sich täglich verändert.
Ich möchte ermitteln, welche Gesamtgröße jedes einzelne dieser 20
Verzeichnisse (inkl. Unterverzeichnisse) belegt.
Verzeichnis A belegt 140,5 MB
Verzeichnis B belegt 364,7 MB
usw...
Kann man das mit 'ner Batch realisieren?
@echo off
set dir=c:\temp\
for /f "tokens=3" %%i in ('dir /s %dir% ^|find "Datei(en)"') do set size=%%i
echo Bytes in %dir%: %size%
Robert Riebisch
2005-11-24 10:29:30 UTC
Permalink
Post by Herbert Kleebauer
@echo off
set dir=c:\temp\
for /f "tokens=3" %%i in ('dir /s %dir% ^|find "Datei(en)"') do set size=%%i
echo Bytes in %dir%: %size%
Wobei du natürlich davon ausgehst, daß der OP Windows NT/2k/XP oder 2003
benutzt. Und purem DOS 6.x geht das so nicht.
--
Robert Riebisch
Bitte NUR in der Newsgroup antworten!
Please reply to the Newsgroup ONLY!
Herbert Kleebauer
2005-11-24 12:42:06 UTC
Permalink
Post by Robert Riebisch
Post by Herbert Kleebauer
@echo off
set dir=c:\temp\
for /f "tokens=3" %%i in ('dir /s %dir% ^|find "Datei(en)"') do set size=%%i
echo Bytes in %dir%: %size%
Wobei du natürlich davon ausgehst, daß der OP Windows NT/2k/XP oder 2003
benutzt. Und purem DOS 6.x geht das so nicht.
Ich würde mal schätzen, daß die Wahrscheinlichkeit, daß der OP
DOS 6.x benutzt weit unter 1% liegt. Und in diesem Fall wird
er sich schon nochmals melden.
Tom Vollmer
2005-11-24 13:05:49 UTC
Permalink
Post by Herbert Kleebauer
Ich würde mal schätzen, daß die Wahrscheinlichkeit, daß der OP
DOS 6.x benutzt weit unter 1% liegt. Und in diesem Fall wird
er sich schon nochmals melden.
... und ich melde mich nochmals.
Aber nicht um zu sagen, dass ich Dos 6 einsetzte, sondern um mich für
die gut funktionierende Lösung zu bedanken.

Gruss Tom
Hans Voges
2005-11-24 20:39:33 UTC
Permalink
Moin Tom Vollmer!
Post by Tom Vollmer
... und ich melde mich nochmals.
Aber nicht um zu sagen, dass ich Dos 6 einsetzte, sondern um mich für
die gut funktionierende Lösung zu bedanken.
...wenn Du Dir die Verzeichnisgrößen mit allen Details angucken und in
ein Logfile schreiben willst, wirf doch mal einen Blick auf "dirsize"
von Christian Klak (www.drk-soft.de). Das ist ein nettes
Freeare-Programm und läßt sich, da DOS, bestens in Batchroutinen
einbinden..

MfG
Hans.
Robert Riebisch
2005-11-24 13:13:00 UTC
Permalink
Post by Herbert Kleebauer
Ich würde mal schätzen, daß die Wahrscheinlichkeit, daß der OP
DOS 6.x benutzt weit unter 1% liegt. Und in diesem Fall wird
Bei mir liegt sie bei 100%. *G*
Post by Herbert Kleebauer
er sich schon nochmals melden.
Ich will es ja auch nur anmerken. War keine Kritik.
--
Robert Riebisch
Bitte NUR in der Newsgroup antworten!
Please reply to the Newsgroup ONLY!
Herbert Kleebauer
2005-11-24 15:07:34 UTC
Permalink
Post by Robert Riebisch
Post by Herbert Kleebauer
Ich würde mal schätzen, daß die Wahrscheinlichkeit, daß der OP
DOS 6.x benutzt weit unter 1% liegt. Und in diesem Fall wird
Bei mir liegt sie bei 100%. *G*
Ich hab ja auch lange an DOS 6.2 und Win3.1 festgehalten.
Aber irgendwann gibt das halt keinen Sinn mehr. Und solange
der Norton Commander und meine kleinen DOS Programme auch
unter XP laufen ist das alles ja auch gar nicht so schlimm.
Robert Riebisch
2005-11-24 18:50:03 UTC
Permalink
Post by Herbert Kleebauer
Aber irgendwann gibt das halt keinen Sinn mehr. Und solange
Naja, das ist Ansichtssache, aber ich wollte dich ja auch nicht
bekehren. :-)

ps: Falls es technisch etwas an der Antwort auszusetzen gibt, bitte ich
um Nachsicht, da ich mich gerade erst in Thunderbird einarbeite.
--
Robert Riebisch
Bitte NUR in der Newsgroup antworten!
Please reply to the Newsgroup ONLY!
Herbert Kleebauer
2005-11-25 12:42:41 UTC
Permalink
Post by Herbert Kleebauer
Ich würde mal schätzen, daß die Wahrscheinlichkeit, daß der OP
DOS 6.x benutzt weit unter 1% liegt. Und in diesem Fall wird
Bei mir liegt sie bei 100%. *G*
Post by Herbert Kleebauer
ps: Falls es technisch etwas an der Antwort auszusetzen gibt, bitte ich
um Nachsicht, da ich mich gerade erst in Thunderbird einarbeite.
Das ist ja interessant, Thunderbird für DOS6.x?
Robert Riebisch
2005-11-25 12:47:47 UTC
Permalink
Post by Herbert Kleebauer
Das ist ja interessant, Thunderbird für DOS6.x?
Nein, natürlich nicht.

Ich habe keinen privaten Internetzugang und surfe daher ausschließlich
in der Firma. Und da ich dort z.B. wegen des Warenwirtschaftsprogrammes
sowieso Windows 2000/XP einsetze, macht's für mich keinen Sinn parallel
einen DOS-PC oder einen Emu laufen lassen.
--
Robert Riebisch
Bitte NUR in der Newsgroup antworten!
Please reply to the Newsgroup ONLY!
Dirk Wolfgang Glomp
2005-11-25 06:57:30 UTC
Permalink
Post by Herbert Kleebauer
Post by Robert Riebisch
Post by Herbert Kleebauer
Ich würde mal schätzen, daß die Wahrscheinlichkeit, daß der OP
DOS 6.x benutzt weit unter 1% liegt. Und in diesem Fall wird
Bei mir liegt sie bei 100%. *G*
Ich hab ja auch lange an DOS 6.2 und Win3.1 festgehalten.
Aber irgendwann gibt das halt keinen Sinn mehr. Und solange
der Norton Commander und meine kleinen DOS Programme auch
unter XP laufen ist das alles ja auch gar nicht so schlimm.
Hallo Robert, hallo Herbert.

[Info]
Ich bin gerade mit dem Linux-Assembeln(Nasm) angefangen.
Hier scheinen aber alle unter Linux nur C zu Programmieren.
So das schon das Verwenden der Linux-Syscalls mir etwas
schwer fällt.

Ein Versenden/Empfangen von "Hello World" übers Netz,
sowie eine Grafikausgabe mittels frame buffer geht schon mal.
Damit ist schon ein klitze-kleiner Anfang geschafft.

Dirk
Herbert Kleebauer
2005-11-25 12:26:29 UTC
Permalink
Post by Dirk Wolfgang Glomp
[Info]
Ich bin gerade mit dem Linux-Assembeln(Nasm) angefangen.
Hier scheinen aber alle unter Linux nur C zu Programmieren.
So das schon das Verwenden der Linux-Syscalls mir etwas
schwer fällt.
Bei Problemen kann ich dir comp.lang.asm.x86 (moderiert, daher
nur sachbezogen) oder alt.lang.asm (falls du auch die verbalen
Schlachten der Assemblerautoren mitbekommen willst) empfehlen.
Post by Dirk Wolfgang Glomp
Ein Versenden/Empfangen von "Hello World" übers Netz,
sowie eine Grafikausgabe mittels frame buffer geht schon mal.
Damit ist schon ein klitze-kleiner Anfang geschafft.
Ich kann mich schon mit Assemblerprogrammierung unter Windows
nicht anfreunden (es geht doch nichts über DOS com Programme)
und daher habe ich von Linux bisher meine Finger gelassen. Aber
hier ein kleines Windows-Programm das auch für diese Gruppe
möglicherweise interessant ist, da man damit innerhalb eine
Batchdatei das Fenster minimieren oder komplett verstecken
kann:

--------------------------------------------------------------------

showwin.exe let you minimize/maximize/hide the command window
within a batch program (requires W2k or better).

Usage: showwin.exe number


0 SW_HIDE
Hides the window and activates another window.

1 SW_SHOWNORMAL
Activates and displays a window. If the window is minimized or maximized,
the system restores it to its original size and position. An application
should specify this flag when displaying the window for the first time.

2 SW_SHOWMINIMIZED
Activates the window and displays it as a minimized window.

3 SW_MAXIMIZE
Maximizes the specified window.

3 SW_SHOWMAXIMIZED
Activates the window and displays it as a maximized window.

4 SW_SHOWNOACTIVATE
Displays a window in its most recent size and position. This value is
similar to SW_SHOWNORMAL, except the window is not actived.

5 SW_SHOW
Activates the window and displays it in its current size and position.

6 SW_MINIMIZE
Minimizes the specified window and activates the next top-level window
in the Z order.

7 SW_SHOWMINNOACTIVE
Displays the window as a minimized window. This value is similar to
SW_SHOWMINIMIZED, except the window is not activated.

8 SW_SHOWNA
Displays the window in its current size and position. This value is
similar to SW_SHOW, except the window is not activated.

9 SW_RESTORE
Activates and displays the window. If the window is minimized or maximized,
the system restores it to its original size and position. An application
should specify this flag when restoring a minimized window.

10 SW_SHOWDEFAULT
Sets the show state based on the SW_ value specified in the STARTUPINFO
structure passed to the CreateProcess function by the program that
started the application.

11 SW_FORCEMINIMIZE
Windows 2000/XP: Minimizes a window, even if the thread that owns the
window is not responding. This flag should only be used when minimizing
windows from a different thread.


---------------------------------------------------------------------------

A simple example:


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
echo ***@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>showwin.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>showwin.com
echo T}{zE~@***@OEKcUt`E}@mqqBsy?seHBEaPhxr?@zAB`***@Cj?>>showwin.com
echo ***@QEKpEt@ij?***@REKpEt@jj?***@SEKkjtlGuNw?***@pjirz>>showwin.com
echo FEvAUSQ?_YLTQ@@?~QCo_F~RDU@?aU?@MQ_AMy1GHs?Gw`***@shM`S_d>>showwin.com
echo bD_nsDddlTr_sPdlnTcnaTv_xP_ngD_rhDhsrT_kkDhrtT_fmDRNCTILk?>>showwin.com
echo staThg_So_rPfnqTl`***@ILm?O?cOKFDP?@@?dx>>showwin.com
echo OdFUu?N?***@J@??KD?HUA?QOGB_QO?F?SCAQO?UDF?UCE?Q_F?DUA?CUB?>>showwin.com
echo OFO?FOS?DUO?IUO?FOW?RU{OWFO?mYU?***@OQ@?QAQ?LUA?_F_og~>>showwin.com
echo UODUO?FOSAFOeAUOyAO_DCSHUOOQO?OCFGuHUOGFO?TUO?***@kcmS>>showwin.com
echo gFkPFUO?ngRThVvTncmTJFvPMQDTrKDDcmqOFkkDFOSAFOeAUOyAdFFSnB>>showwin.com
echo sT`***@PBsdTrmnTdknTmhVTvncTwDSSOshTbnqTrrdTT~?K>>showwin.com
echo ?OGOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it\=upkNQD??OuQsQG[i?>>showwin.com
echo RwrqosHy?Mjmv\@IuBlpUrHdjNAslF~mH}OKT?U??PT~OL?O?O?i?COT~B>>showwin.com
echo U?OCU?YF0x>>showwin.com

showwin.com>showwin.exe
del showwin.com

dir

:: wait 4 seconds
ping -n 4 localhost >nul

:: hide window
showwin.exe 0

dir /b

:: wait 4 seconds
ping -n 4 localhost >nul

:: show window
showwin.exe 5

:: wait 4 seconds
ping -n 4 localhost >nul

del showwin.exe
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


The source code:

winmain::
jsr.l (GetCommandLine)
; skip program name
eor.l r1,r1 ; not within "" flag
dec.l r0
_20: inc.l r0
cmp.b #0,(r0)
beq.b _10
cmp.b #'"',(r0)
bne.b _30
not.l r1
_30: or.l r1,r1
bne.b _20
cmp.b #' ',(r0)
bne.b _20
inc.l r0

_10: eor.l r5,r5
move.l #5,r4 ; default: SW_SHOW
_50: movu.bl (r0),r1
inc.l r0
or.b r1,r1
beq.b _40
sub.b #'0',r1
bcs.b _50
cmp.b #9,r1
bhi.b _50
mulsq.l #10,r5,r5
add.l r1,r5
eor.l r4,r4
br.b _50
_40: or.l r4,r4
beq.b _60
move.l r4,r5

_60: jsr.l (GetConsoleWindow)

move.l r5,-(sp)
move.l r0,-(sp)
jsr.l (ShowWindow)

moveq.l #0,-(sp)
jsr.l (ExitProcess) ; exit program
Dirk Wolfgang Glomp
2005-11-25 13:51:50 UTC
Permalink
Post by Herbert Kleebauer
Post by Dirk Wolfgang Glomp
[Info]
Ich bin gerade mit dem Linux-Assembeln(Nasm) angefangen.
Hier scheinen aber alle unter Linux nur C zu Programmieren.
So das schon das Verwenden der Linux-Syscalls mir etwas
schwer fällt.
Bei Problemen kann ich dir comp.lang.asm.x86 (moderiert, daher
nur sachbezogen) oder alt.lang.asm (falls du auch die verbalen
Schlachten der Assemblerautoren mitbekommen willst) empfehlen.
...habe bereits beides seit einiger Zeit abboniert,
nur mein english ist nicht so gut um überall mitzustreiten.
Habe ich doch das meiste english erst seit/mit/durch
dem Computern gelernt.
Post by Herbert Kleebauer
Post by Dirk Wolfgang Glomp
Ein Versenden/Empfangen von "Hello World" übers Netz,
sowie eine Grafikausgabe mittels frame buffer geht schon mal.
Damit ist schon ein klitze-kleiner Anfang geschafft.
Ich kann mich schon mit Assemblerprogrammierung unter Windows
nicht anfreunden
...ich auch nicht.
Post by Herbert Kleebauer
(es geht doch nichts über DOS com Programme)
...genau, na manchmal darf es auch eine MZ-exe sein.
Post by Herbert Kleebauer
und daher habe ich von Linux bisher meine Finger gelassen. Aber
hier ein kleines Windows-Programm das auch für diese Gruppe
möglicherweise interessant ist, da man damit innerhalb eine
Batchdatei das Fenster minimieren oder komplett verstecken
showwin.exe let you minimize/maximize/hide the command window
within a batch program (requires W2k or better).
Usage: showwin.exe number
...habe ich doch schon läääängst gefunden
und natürlich sofort archiviert.

Probieren tue ich es dann später mal,
da ich mich jetzt doch voll auf Linux konzentriere.

Vorerst ohne X-server, also pure shell(command-line)
mit schon angeschaltetem frame buffer(/etc/lilo.conf).
...

Aaargh, kann ich doch wieder nicht lesen,
da muß ich wohl wieder mal ndisasm.exe bemühen.

-----------------------------------

Hilfe bei Linux bekomme ich zum Glück von meinem Neffen,
der mir auch den Debian-Router einrichtete,
den ich jetzt schon jahrelang ohne Ausfälle betreibe.

Uff, die Linux-Programmierer scheinen alle sehr C-lastig zu sein.
In de.comp.os.unix.programming wurde ich doch sofort
wieder in eine Diskussion über Programmiersprachen verwickelt,
wo ich doch den thread extra mit "assemble frame buffer" startete.
Fast jeder will mir dort Assembler ausreden...........unglaublich.
Nur richtige Hilfe, bekam ich bisher nur von meinem Neffen.

Auch suche ich immer noch nach einer syscall-Liste
(int 80h ähnlich wie int 21h unter DOS),
wo die verwendeten Register genau erklärt werden wie im RBIL.

Aber das Netzen unter DOS wollte bei mir nie klappen,
da hat es mir Linux schon voll angetan.
Mal schauen wie man sowas skalieren muß,
wenn mehrere CPUs über Netz an einem Fraktal arbeiten.
Vieleicht sollte ich ebenfalls hierfür _noch mal_ zwei GBit-NICs,
für den dritt- und viert-Rechner kaufen
(GBit-Switch ist schon vorhanden)?

Dirk
Holger Petersen
2005-11-26 14:19:51 UTC
Permalink
Post by Dirk Wolfgang Glomp
Uff, die Linux-Programmierer scheinen alle sehr C-lastig zu sein.
Auch suche ich immer noch nach einer syscall-Liste
(int 80h ähnlich wie int 21h unter DOS),
wo die verwendeten Register genau erklärt werden wie im RBIL.
Die muss doch 'irgendwo' im Linux-Quelltext zu finden sein.
Aber das ist ja wieder "C"-Quellcode :-)

SCNR, Holger
Dirk Wolfgang Glomp
2005-11-27 04:45:06 UTC
Permalink
Post by Holger Petersen
Post by Dirk Wolfgang Glomp
Uff, die Linux-Programmierer scheinen alle sehr C-lastig zu sein.
Auch suche ich immer noch nach einer syscall-Liste
(int 80h ähnlich wie int 21h unter DOS),
wo die verwendeten Register genau erklärt werden wie im RBIL.
Die muss doch 'irgendwo' im Linux-Quelltext zu finden sein.
Nö, aber vieleicht bin ich hier zu blond beim Suchen/Finden?
Post by Holger Petersen
Aber das ist ja wieder "C"-Quellcode :-)
Leider ist die Linuxwelt grausam.
So sind die Sourcen gut versteckt und verteilt,
die Manpages dazu für mich nicht aussagekräftig genug.

Auch auf "de.comp.os.unix.programming" bekam ich hierzu keine hilfe.

Dirk
Herbert Kleebauer
2005-11-27 09:14:05 UTC
Permalink
Followup set to alt.lang.asm
.............................
Post by Dirk Wolfgang Glomp
Auch suche ich immer noch nach einer syscall-Liste
(int 80h ähnlich wie int 21h unter DOS),
wo die verwendeten Register genau erklärt werden wie im RBIL.
Didn't Beth make a list of the int 80 calls? Is this list
available somewhere?
Dirk Wolfgang Glomp
2005-11-27 12:40:20 UTC
Permalink
Post by Herbert Kleebauer
Followup set to alt.lang.asm
Gut das du dieses Followup hier oben erwähntest,
da ich den Header meist zugeklappt habe
und sowas dann schnell übersehe.
Post by Herbert Kleebauer
Post by Dirk Wolfgang Glomp
Auch suche ich immer noch nach einer syscall-Liste
(int 80h ähnlich wie int 21h unter DOS),
wo die verwendeten Register genau erklärt werden wie im RBIL.
Didn't Beth make a list of the int 80 calls? Is this list
available somewhere?
Wie Frank Kotler in alt.lang.asm schrieb,
gibt es hier entsprechendes:
http://members.bsn1.net/***@save-net.com/asm/

Das asmide/doc ist zwar in etwas anderem Stil als RBIL,
hilft mir aber in jedem Fall schon mal weiter.

Vieleicht sollte ich solche Anfragen demnächst
lieber dort in "alt.lang.asm" stellen,
als mich nach "de.comp.os.unix.programming" zu verirren?

Vielen Dank Herbert, das half mir wieder mal wirklich weiter.

Dirk

Loading...