Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Verzeichnisgrößen vergleichen und Differenz ausgeben

Frage Entwicklung Batch & Shell

Mitglied: crazyhoesl

crazyhoesl (Level 1) - Jetzt verbinden

12.12.2007, aktualisiert 13.12.2007, 6519 Aufrufe, 8 Kommentare

Hallo,

ich möchte was ganz simples an dem ich aber im Moment verzweifle..

Ich möchte eine Batch die mir von 2 Laufwerken die Differenz des belegten Speicherplatzes anzeigt,

also z.b.

Platte R: hat 400GB belegt

Platte T: hat 750GB belegt.

jetzt ist die Differenz und zugleich das Ergebnis das ich mir wünsche 250GB.

Eine Information kann noch wichtig sein: Platte R: kann NIE größer sein als Platte T:, man kann also immer T-R rechnen.

Hat jemand eine Idee?

Viele Grüße,

crazyhoesl
Mitglied: miniversum
12.12.2007 um 19:01 Uhr
Versuchs mal Damit:
01.
@echo off 
02.
set lw1=R: 
03.
set lw2=T: 
04.
 
05.
FOR /F "tokens=3 delims= " %%i in ('dir %lw1%') do set lw1size=%%i 
06.
FOR /F "tokens=3 delims= " %%i in ('dir %lw2%') do set lw2size=%%i 
07.
set lw1size=%lw1size:.=% 
08.
set lw2size=%lw2size:.=% 
09.
set lw1size=%lw1size:~0,-6% 
10.
set lw2size=%lw2size:~0,-6% 
11.
 
12.
set /a dif=%lw2size%-%lw1size% 
13.
 
14.
echo Platte %lw1% hat %lw1size% GByte belegt. 
15.
echo Platte %lw2% hat %lw2size% GByte belegt. 
16.
echo Die Differenz ist %dif% GByte.
Die umrechnung vom Byte in GByte ist hier allerdings der einfachheit halber /1000000 (die letzten 6 Stellen abgeschnitten).
miniversum
Bitte warten ..
Mitglied: crazyhoesl
12.12.2007 um 22:54 Uhr
Vielen Dank! Genau das habe ich gebraucht!
Bitte warten ..
Mitglied: crazyhoesl
12.12.2007 um 23:25 Uhr
Jetzt habe ich doch ein Problem

Die Zahl die die Batch ausgibt ist nicht der belegte Speicher, sondern der freie Speicherplatz.

Jetzt gebe ich zu das es mit dem "dir" Befehl nicht recht einfach ist den belegten Speicherplatz zu bekommen, da er nur für den jeweiligen Pfad die belegten Bytes ausgibt. Also um zwei Festplatten zu vergleichen ist dieser Befehl wohl nicht zu empfehlen.

Aber in meinem Fall haben beide Laufwerke keinerlei Unterordner. Das ist jetzt wohl Glück, aber wie kann ich beeinflussen dass er die belegten Bytes nimmt?

Vielen Dank!
Bitte warten ..
Mitglied: crazyhoesl
13.12.2007 um 00:09 Uhr
Ich denke ich habe es mir selber fast schon gelöst:

01.
@echo off 
02.
set lw1=c: 
03.
set lw2=z: 
04.
 
05.
FOR /F "tokens=3 delims= " %%i in ('dir %lw1%^|find "Datei"') do set lw1size=%%i 
06.
FOR /F "tokens=3 delims= " %%i in ('dir %lw2%^|find "Datei"') do set lw2size=%%i 
07.
 
08.
set lw1size=%lw1size:.=% 
09.
set lw2size=%lw2size:.=% 
10.
 
11.
set /a lw1size=%lw1size%/1073741824 
12.
set /a lw2size=%lw2size%/1073741824 
13.
 
14.
set /a dif=%lw2size%-%lw1size% 
15.
 
16.
echo Platte %lw1% hat %lw1size% GByte belegt. 
17.
echo Platte %lw2% hat %lw2size% GByte belegt. 
18.
echo Die Differenz ist %dif% GByte. 
19.
 
Ich habe nur ein Problem, die Rechnung funktioniert nicht... Kann es daran liegen dass die Zahl zu lang/groß ist die berechnet werden muss?

Danke, crazyhoesl
Bitte warten ..
Mitglied: 58502
13.12.2007 um 00:35 Uhr
Das klappt so nicht, er zählt nämlich nur die Dateien, die Verzeichnisse nicht. Wenn im Root des Laufwerks keine Dateien vorhanden sind, ist lwxsize=0

Die etwas kompliziertere Version, die wahrscheinlich hier aus dem Forum stammt:
01.
 
02.
::------snipp Dirsize.cmd (Parameter1 Verzeichnisname [opt Par2: /R wie Rekursiv] /opt. par3 =Ebenen 
03.
@echo off & setlocal & Set DIRCMD= 
04.
IF /i [%2]==[/R] for /R "%~1" %%a in (.) do @%0 "%%a" %3 
05.
if not [%2]==[] Set /a "Level=%2+2" 
06.
if defined level for /f "delims= tokens=1,%level%" %%i in ("%~1") do if not [%%j]==[] goto :eof 
07.
If exist "%1" (    
08.
  for /f "tokens=3" %%c in ('dir "%~1" /s ^2^>nul^| findstr /c:"Datei(en)" ') do set DirSize=%%c 
09.
10.
set "space20=____________________" 
11.
if defined DirSize set "Dirsize=%space20%%Dirsize%" 
12.
if defined DirSize echo %DirSize:~-15%    %~f1

Edit da isse:
Bitte warten ..
Mitglied: Biber
13.12.2007 um 07:16 Uhr
Moin crazyhoesl,

Ich habe nur ein Problem, die Rechnung funktioniert nicht...
Kann es daran liegen dass die Zahl zu lang/groß ist die berechnet werden muss?

Jepp, diese Vermutung ist richtig, wie Dir ein kurzer Test am CMD-Prompt zeigen würde:
01.
>set /a 1073741824/1073741824 
02.
03.
>set /a 1001073741824/1073741824 
04.
Ungültige Zahl. Zahlen sind begrenzt auf eine Genauigkeit von 32 Bits.
Bedeutet, bei den heutzutage üblichen MediaMarkt-Einsteiger-Plattengrößen kommst Du mit der Ausgabe des normalen DIR-Befehls (die immer in Byte ist) nicht weiter, wenn Du "rechnen" willst.
Du musst also ein Utility verwenden, dass die die Größe in MByte/GByte ausgibt.
Irgendeins von den vielen DirSize/DiskUse/DU/DirUsage-Freeware-Utilities.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
13.12.2007 um 11:13 Uhr
Hallo crazyhoesl!

Du musst also ein Utility verwenden, dass die die Größe in MByte/GByte ausgibt.
Irgendeins von den vielen DirSize/DiskUse/DU/DirUsage-Freeware-Utilities.
... oder ein wenig VBS:
01.
@echo off & setlocal 
02.
set "D=%temp%\Difference.vbs" 
03.
echo Set fso=CreateObject("Scripting.FileSystemObject"):WScript.Echo Int((fso.GetFolder("T:\").Size-fso.GetFolder("R:\").Size)/1024/1024/1024)>%D% 
04.
for /f %%i in ('cscript //nologo %D%') do set Diff=%%i 
05.
echo %Diff%
Zur Genauigkeit: Das Ergebnis wird immer auf eine ganze Zahl abgerundet ausgegeben (Dezimalstellen werden einfach weg gelassen). Berücksichtigt wird die Gesamtgröße der Dateien und Ordner.

Alternativ dazu (und eigentlich die exakte Umsetzung Deiner Anforderung "Differenz des belegten Speicherplatzes"):
01.
@echo off & setlocal 
02.
set "D=%temp%\Difference.vbs" 
03.
echo Set fso=CreateObject("Scripting.FileSystemObject"):WScript.Echo Int(((fso.GetDrive("T").TotalSize-fso.GetDrive("T").FreeSpace)-(fso.GetDrive("R").TotalSize-fso.GetDrive("R").FreeSpace))/1024/1024/1024)>%D% 
04.
for /f %%i in ('cscript //nologo %D%') do set Diff=%%i 
05.
echo %Diff%
Der belegte Speicherplatz wird hier ermittelt: (Gesamtkapazität der Partition - freier Speicher der Partition). Die Rundung des Ergebnisses erfolgt wie oben angegeben.

Grüße
bastla
Bitte warten ..
Mitglied: crazyhoesl
13.12.2007 um 12:26 Uhr
Super!

Vielen Dank wie immer für euer Unterstützung!!!!

crazyhoesl
Bitte warten ..
Ähnliche Inhalte
Linux
gelöst Vergleich zwischen Distributionen. Mögliche Kriterien? (18)

Frage von hansleitner zum Thema Linux ...

Entwicklung
Vergleichen und entfernen (2)

Frage von Florian456 zum Thema Entwicklung ...

Batch & Shell
gelöst Powershell Verzeichnisse vergleichen mit Zwischenschritt (22)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Grafikkarten & Monitore
Grafikkarten Vergleich & Grafikkarten Rangliste

Link von joemix zum Thema Grafikkarten & Monitore ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Router & Routing
gelöst Getrenntes Routing bei VoIP und Daten (12)

Frage von Hobbystern zum Thema Router & Routing ...