Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Fsutil - in batchdatei einbinden

Frage Entwicklung Batch & Shell

Mitglied: Backspace

Backspace (Level 1) - Jetzt verbinden

16.12.2010 um 21:45 Uhr, 4432 Aufrufe, 7 Kommentare

Hallo,

Sorry, ich schon wieder.

Komm leider wieder nicht weiter:

01.
 
02.
set fixed=%temp%\fixed.txt 
03.
 
04.
for /f %%a in ('fsutil fsinfo drives') do fsutil fsinfo drivetype %%a |find "Eingebautes" >>%fixed% 
05.
 
06.
for /f %%b in ('fsutil fsinfo drivetype %%a |find "Eingebautes') do fsutil volume diskfree %%b >>%fixed% 
07.
 
08.
for /f "tokens=*" %%b in (fixed.txt) do wget -q "http:........" 
09.
 
Mein Vorhaben:

mit fsutil sollen einmal die lokalen Laufwerke und die entsprechenden freien Speicher ausgelesen werden.

Da fsutil beides jeweils anscheinend nur einzeln auslesen kann, muß man die ausgelesenen Werte in eine Datei Zwischenspeichern und zum Schluß wieder richtig zusammenführen.

Ich mußte leider auf fsutil zurückgreifen, da ich seit neuem die Vorgabe habe, den freien Speicher in Byte anzeigen zu lassen, die Umrechnung des freien Speichers (über PHP mit 1024er Blockgröße) von Terrabyte/Gigabyte auf Byte wird leider zu ungenau.


Danke im Voraus !

Gruß

Backspace
Mitglied: bastla
16.12.2010 um 23:02 Uhr
Hallo backspace!

Wie wär's mit
for /f "tokens=1,4" %%a in ('"wmic logicaldisk get caption,description,freespace"^|findstr Festplatte') do echo %%a %%b
Grüße
bastla
Bitte warten ..
Mitglied: Backspace
17.12.2010 um 10:26 Uhr
Hallo bastla,

Danke funktionierte auf Anhieb.

Eine Frage noch:

wenn ich den Code mit "size" erweitere, werden mir auch die Gesamtkapazitäten angezeigt, die mathematische Umrechnung um den freien Speicher in Prozent zu erhalten wäre:

100% - [freespace / size * 100]



01.
for /f "tokens=1,4" %%a in ('"wmic logicaldisk get caption,description,freespace,size"^|findstr Festplatte') do echo %%a %%b
Kann man das auch mit in die Forschleife einfügen, sonst würde ich ja doppelte Ausgaben erhalten, also einmal nur Laufwerk und Frei(%) , und eine weitere Ausgabe nur mit Laufwerk und Frei(Byte), wenn ich noch eine zweite Forschleife erstelle.

Danke

Gruß

Backspace
Bitte warten ..
Mitglied: bastla
17.12.2010 um 15:19 Uhr
Hallo Backspace!

Bedingt durch die Beschränkungen der CMD-Arithmetik (nur ganzzahlig, max 32-Bit-Werte) könntest Du das nur etwa so versuchen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "tokens=1,4,5" %%a in ('"wmic logicaldisk get caption,description,freespace,size"^|findstr Festplatte') do ( 
03.
    set Free=%%b 
04.
    set Size=%%c 
05.
    set /a Pct=!Free:~,-3!/!Size:~,-5! 
06.
    echo %%a %%b !Pct! 
07.
)
Den freien Speicher in Prozent erhältst Du übrigens mit
freespace / size * 100
- Deine Formel würde den Prozentsatz für den belegten Speicherplatz liefern.

Für die Berechnung im Batch wird mit auf 1.000 Byte abgerundeten Werten gerechnet, indem vom freien Speicherplatz die letzten 3 Stellen weggelassen werden und vom Gesamtspeicher die letzten 5 Stellen - entspricht dann also der Formel
freespace / (size / 100)
Grüße
bastla

P.S.: Was spricht eigentlich gegen die Verwendung von VBS (einen entsprechenden Ansatz hattest Du ja bereits)?
Bitte warten ..
Mitglied: Backspace
17.12.2010 um 16:13 Uhr
Hallo bastla,

das VBS mußte ich leider wieder aus der batch entfernen (Anweisung von Oben).


Zum obigen Code:

es kommt leider folgende Fehlermeldung:

Fehlender Operator
C: 63968415744 !Pct!
Fehlender Operator
D: 7050096640 !Pct!

Wie müßte es aussehn, wenn ich es mit dem..............DO wget -q "http:................." verbinden möchte ?

Danke

Gruß

Backspace
Bitte warten ..
Mitglied: bastla
17.12.2010 um 16:45 Uhr
Hallo Backspace!

Ändere das "echo off" auf "echo on" und starte den Batch aus einem CMD-Fenster - dann siehst Du, welcher Wert nicht zugewiesen wird, und wenn Du dann noch die Ausgabe von
wmic logicaldisk get caption,description,freespace,size
analysierst, wirst Du hoffentlich feststellen können, welche "tokens" bei Deiner (leider nicht genannten) Windows-Version benötigt werden (unter XP SP3 funktioniert der von mir gepostete Batch) ...
Wie müßte es aussehn, wenn ich es mit dem..............DO wget -q "http:................." verbinden möchte ?
Die gesamte Klammer (= Zeilen 3 bis 6) wird für jedes Laufwerk einmal ausgeführt - daher einfach "wget ..." innerhalb der Klammer platzieren (analog zu Zeile 6).

Grüße
bastla
Bitte warten ..
Mitglied: Backspace
18.12.2010 um 20:13 Uhr
Hallo bastla,

möchte mich zuerst wieder für die tolle Hilfe bedanken.

Mein Arbeitsrechner an dem ich alles teste, hat leider ein Vista Betriebssystem, abgesehn davon muß das Batch für alle Winversionen funktionieren (Win Server2003/2008, XP Prof., Vista, Win7,....).

Könnte man das evtl. auch in dieser Art lösen, war ein Ansatz von mir, den ich leider auch nicht zu Ende bringen konnte ?

01.
FOR /F "tokens=1,4" %%i IN ('"wmic logicaldisk get caption,description,size"^|findstr Lokale') DO SET "Size=%%i" 
02.
FOR /F "tokens=1,4" %%k IN ('"wmic logicaldisk get caption,description,freespace"^|findstr Lokale') DO SET "Free=%%k" 
03.
 
04.
FREESPACE=100 
05.
FreeSpace=FREESPACE-(Free/Size*100) 
06.
let FreeSpace=$FREESPACE_in_Prozent - $...... 
07.
08.
09.
.

Ich kann Deine o.g. Vorschläge erst wieder am Montag testen, wenn ich wieder in der Firma bin.

Danke

Gruß

Backspace
Bitte warten ..
Mitglied: bastla
18.12.2010 um 21:15 Uhr
Hallo Backspace!

Abgesehen davon, dass unsere Interpretationen hinsichtlich der Prozentberechnung etwas differieren, solltest Du schon gesehen haben, dass arithmetische Berechnungen in CMD mit "set /a Variable=" durchgeführt werden.
Hinsichtlich der Verwendung zweier "wmic"-Abfragen: ist möglich (wenn auch für den angestrebten Zweck nicht in der von Dir dargestellten Form), aber ziemlich sinnlos ...
Ob die "wmic"-Ausgabe unter allen benötigten BS das selbe Ergebnis (zumindest hinsichtlich der "tokens") liefert, musst Du selbst testen.
Noch als Hinweis: Für die Verwendung von "wmic" sind Admin-Rechte erforderlich.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Netzwerk
USB-Gerät ins Netzwerk (Domäne) einbinden (4)

Frage von griss0r zum Thema Windows Netzwerk ...

Windows 7
Tool für Clients zum Drucker einbinden (6)

Frage von DragonKill zum Thema Windows 7 ...

Exchange Server
Zweite Exchange Postfach in Outlook 2010 einbinden (2)

Frage von DieAzubinne zum Thema Exchange Server ...

Batch & Shell
gelöst Mit Batchdatei Informationen auslesen und diese strukturiert in Excel ausgeben (9)

Frage von Flodsche zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...