igordon
Goto Top

Benötige Hilfestellung beim abarbeiten meherer Dateien durch eine For Schleife

Hallo,

folgendes Problem. Ich erstelle mit einem Skript ein Backup einer Datenbank. Die Archive heissen dann: archiv_01_DatumDesBackups.zip, archiv_02_DatumDesBackups.zip...

Ich möchte jetzt gerne eine Batch Datei schreiben die jedes archiv einmal anfasst und mir mittels einer if Abfrage sagt ob die Datei innerhalb der Toleranz liegt (zwischen 3 und 5 MB).

Wie kann ich das am besten umsetzen?

Content-ID: 278483

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

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

colinardo
colinardo 27.07.2015 aktualisiert um 19:04:01 Uhr
Goto Top
Hallo iGordon,
mit Batch könnte das so aussehen:
@echo off
set "backupordner=D:\Backup"  
for %%a in ("%backupordner%\*.zip") DO @(  
    if %%~za GTR 3145728 (
        if %%~za LSS 5242880 (
	    echo Datei "%%a" ist OK !  
	) else (
	    echo Datei "%%a" ist groeßer als 5MB  
	)
    ) else (
        echo Datei "%%a" ist kleiner als 3MB  
    )
)

Oder alternativ mit Powershell, bekommst du so alle Dateien die in der Toleranz liegen
gci 'D:\Backup\*.zip' | ?{$_.Length -ge 3MB -and $_.Length -le 5MB}  
oder alle die außerhalb der Toleranz liegen:
gci 'D:\Backup\*.zip' | ?{$_.Length -lt 3MB -or $_.Length -gt 5MB}  
Kombiniert beispielsweise so:
$files = gci 'D:\Backup\*.zip' | group {$_.Length -le 5MB -and $_.Length -ge 3MB}  

write-host "Folgende Dateien entsprechen den Anforderungen >= 3MB und <=5 MB `n$("="*80)" -F Green  
$files | ?{$_.Name -eq $true} | select -Expand Group | select -Expand Fullname
write-host "`nFolgende Dateien entsprechen nicht den Anforderungen `n$("="*80)" -F Yellow  
$files | ?{$_.Name -eq $false} | select -Expand Group | select -Expand Fullname
Je nach Anforderung natürlich entsprechend anpassbar. Die Möglichkeiten sind da vielfältig.

Grüße Uwe