Hallo WinFuture Forum,
ich habe ein Problem, weshalb ich um Rat frage.
Wir haben einen Pfad => W:
Typ: Netzlaufwerk
Dateisystem: NTFS
Dort werden .VHDX Dateien gespeichert.
Jetzt möchte ich per Batch, die Dateien größer als 10 GB auslesen.
Sollte keine Datei >= 10GB sein, soll ein good zurückkommen, falls aber eine oder mehrere Dateien >= 10GB sind bad zurückkommen.
Das Ganze möchte ich in unseren Hostmonitor eintragen, der das per Batch prüfen soll, sollte dann eine Datei >= 10GB sein, soll uns nur mitgeteilt werden, das wir in dem Pfad nach den Dateien schauen müssen.
Das habe ich so weit hinbekommen:
@echo off
wmic datafile where "drive='w:' AND extension='vhdx' AND filesize>='10741612544'" get filesize
if %%filesize%% GEQ '10741612544' (
echo ScriptRes:Bad:Full
) else %%filesize%% LSS "10741612544" (
echo ScriptRes:Ok:Good
)
Meine Probleme sind aber nun, entweder bekomme ich nur Good oder nur Bad, egal was ich an der Größe ändere...
Ein weiteres Problem ist, dass wenn ich gar keine Datei finde, immer ein "Keine Instanz verfügbar." zurückbekomme, obwohl das so gut ist und ich ein Good möchte.
Ich hoffe, ihr könnt mir helfen, bin über jede Hilfe dankbar:)
VG
Seite 1 von 1
VHDX Dateien auslesen
Anzeige
#2
geschrieben 24. Juli 2023 - 16:15
1) Du weißt schon das "wmic" ein Auslaufmodel ist.
2) Das kann so nicht funktionieren, da "filesize" keine Variable ist.
ERRORLEVEL wird von wmic nicht gesetzt, also fällt mir nur "Trick dirty" ein.
2) Das kann so nicht funktionieren, da "filesize" keine Variable ist.
ERRORLEVEL wird von wmic nicht gesetzt, also fällt mir nur "Trick dirty" ein.
@echo off wmic datafile where "drive='w:' AND extension='vhdx' AND filesize>='10741612544'" get filesize 1>%TMP%\zzz.tmp 2>nul Call :File_Size %TMP%\zzz.tmp if %FileSize% GEQ 10 ( echo ScriptRes:Bad:Full ) else if %FileSize% LSS 9 ( echo ScriptRes:Ok:Good ) :ende exit /b ::==================================================== :File_Size Set FileSize=%~z1 Exit /B 0
#3
geschrieben 24. Juli 2023 - 21:13
Ich würde mich ja nicht mehr mit den alten Batch Sachen rumquälen und das per Windows Powershell machen, geht ganz fix und ist deutlich besser lesbar.
$Verz = "w:\" $Filter = "*.vhdx" $AlleDateien = Get-ChildItem -Path $Verz -filter $Filter if ($AlleDateien) { foreach($Datei in $AlleDateien) { if ($Datei.length -gt 10737418240) { Write-host "$Datei - Bad" -ForegroundColor red } else { write-host "$Datei - Good" # oder Zeile darüber auskommentieren, falls keine Ausgabe gewünscht ist } } } else { write-host "Keine Dateien in $Verz vorhanden - Good" }
Dieser Beitrag wurde von Stef4n bearbeitet: 24. Juli 2023 - 21:14
... aber bitte vorher ein Backup machen! ;-)
Thema verteilen:
Seite 1 von 1