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-Key: 278483

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

Printed on: April 20, 2024 at 04:04 o'clock

Member: colinardo
colinardo Jul 27, 2015 updated at 17:04:01 (UTC)
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