WinFuture-Forum.de: VHDX Dateien auslesen - WinFuture-Forum.de

Zum Inhalt wechseln

Windows 10: Alle News, der Download sowie zahlreiche Screenshots und Videos zum neuen Betriebssystem von Microsoft. Jetzt im WinFuture Windows 10 - Special informieren!
Seite 1 von 1

VHDX Dateien auslesen


#1 Mitglied ist offline   easyfone 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 07. März 22
  • Reputation: 0

geschrieben 24. Juli 2023 - 11:54

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
0

Anzeige



#2 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

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.

@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


0

#3 Mitglied ist offline   Stef4n 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.216
  • Beigetreten: 20. August 18
  • Reputation: 251
  • Geschlecht:Männlich
  • Wohnort:RLP ~Mainz
  • Interessen:pc

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! ;-)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0