spacerpatte
Goto Top

Batch-Datei Ordnergröße von vielen verschiedenen Pfaden aus txt-Datei in Excel-Datei

Hallo,

Ich möchte mir für ein Backup die Größen verschiedener Ordner in einer Excel-Tabelle, oder txt-Datei ausgeben lassen.
Ich habe eine txt-Datei in der alle Pfade aufgelistet sind. Aus dieser möchte ich mir die Größen vor dem Backup ausrechnen und in einer Tabelle ausgeben lassen, damit ich weiß, ob mein Band für das Backup ausreicht.
Ein VB-Script dafür habe ich schon gefunden, aber da habe ich mit den Administrator-Rechten zu kämpfen.

Hat jemand eine Idee, wie ich hier vorgehen muss?

Danke im voraus!

Content-Key: 212439

Url: https://administrator.de/contentid/212439

Printed on: April 19, 2024 at 16:04 o'clock

Member: Endoro
Endoro Jul 25, 2013 at 09:26:17 (UTC)
Goto Top
Hi,
haben die Ordner noch Unterordner? Dann würde ich VBS empfehlen.
Wenn nicht, geht's auch mit Batch einfach.
Die Rechte, dort was zu lesen musst du in jedem Fall haben.

lg
Member: Spacerpatte
Spacerpatte Jul 25, 2013 at 10:02:56 (UTC)
Goto Top
Hallo,

Danke für Deine Antwort!

Die Rechte dazu habe ich.
Hast Du vielleicht eine Ahnung wie so etwas als Batchdatei aussehen müsste?
Als VBS will er trotz Admin-Rechten einige Ordner (z.b Profile) nicht auslesen.
Lg
Member: Endoro
Endoro Jul 25, 2013 at 12:16:11 (UTC)
Goto Top
Die Grösse eines Ordners geht so:
@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "tokens=3" %%a IN ('dir /a-d /-c') DO (  
	SET size=!free!
	SET free=%%a
)
ECHO %size% Bytes IN %cd%
Gruss.
Member: bastla
bastla Jul 25, 2013 updated at 18:56:54 (UTC)
Goto Top
... und mit Auslesen der Liste sowie ohne "delayedExpansion" (ungetestet):
@echo off & setlocal
set "Ein=D:\Deine Ordnerliste.txt"  
set "Aus=D:\Ordnergroessen.csv"  

del "%Aus%" 2>nul  
for /f "usebackq delims=" %%i in ("%Ein%") do call :ProcessDir "%%i"  
goto :eof

:ProcessDir
for /f "tokens=3" %%i in ('dir /a-d /-c %1 2^>nul ^|findstr /eirc:"[0-9] Bytes"') do set "size=%%i"  
>>"%Aus%" echo %1,%size%  
goto :eof
Grüße
bastla
Member: Endoro
Endoro Jul 25, 2013 at 18:51:51 (UTC)
Goto Top
Hallo ,
der Weg ohne findstr hat den Vorteil, dass er auch mit fremdsprachigem Windows funktioniert. Ohne verzögerte Erweiterung:
@ECHO OFF &SETLOCAL
FOR /f "tokens=3" %%a IN ('dir /a-d /-c') DO (  
	CALL SET size=%%free%%
	SET free=%%a
)
ECHO %size% Bytes IN %cd%
Der Vorteil wird dadurch wieder zunichte gemacht, dass es mit AM/PM Zeitformaten wieder nicht klappt, dann muss es tokens=4 heissen.
Gruss.
Member: bastla
bastla Jul 25, 2013 updated at 19:01:41 (UTC)
Goto Top
@ Endoro
Ich muss zu meiner Schande gestehen, dass ich die mit fremdsprachigen Windows-Versionen (von Englisch abgesehen) erzeugten Ausgaben nicht kenne - endet bei anderen Versionen die vorletzte Zeile des "dir"-Befehls tatsächlich nicht mit in etwa
15643218 bytes
Was soll übrigens das Zeitformat für eine Auswirkung auf die Ausgabe der Gesamtdateigröße eines Ordners haben?

Grüße
bastla
Member: Endoro
Endoro Jul 25, 2013 at 20:35:46 (UTC)
Goto Top
@bastla

Hier mal ein Beispiel französich:
Répertoire de d:\tmp\test\hsqldb\Run_0

06/04/2013  07:10    <REP>          .
06/04/2013  07:10    <REP>          ..
06/04/2013  07:10                32 data.data
06/04/2013  07:10                 0 data.lck
06/04/2013  07:10                 0 data.lobs
06/04/2013  07:10                 0 data.log
06/04/2013  07:10                89 data.properties
06/04/2013  07:10             1,757 data.script
06/04/2013  07:10    <REP>          data.tmp
               6 fichier(s)            1,878 octets
               3 Rép(s)  73,975,611,392 octets libres

Das packt dann keine Regex mehr face-smile

Mit den Tokens hast du recht, die spielen in der Zusammenfassung keine Rolle.
Grüsse.