Ergebnis 1 bis 2 von 2

Thema: Datumbegrenzung

  1. #1
    Registriert seit
    18.03.2005
    Beiträge
    382

    Standard Datumbegrenzung

    Guten Tag

    Diesen Script (BAT) habe ich gemacht um Bilder zu verkleinern.

    Wie kann ich nun diesem Script noch beibringen, dass er nur Datums des aktuellen Tages verarbeiten soll? Den sonst läuft der Script immer länger für nichts.


    =====

    cd /d Pfad1

    for %%f in (*.jpg) do convert -sample 535x535 %%f Pfad2/%%f

    =====

  2. #2
    vstm ist offline Fortgeschrittener Benutzer
    Registriert seit
    28.12.2008
    Ort
    Züri Oberland
    Alter
    33
    Beiträge
    123

    Standard AW: Datumbegrenzung

    Also wenn Du zwingend ein Batch-Script verwenden möchtest, ist es denke ich einfacher wenn Du einfach zuerst prüfst, ob die Datei schon existiert und nur den convert-Befehl aufrufst, wenn die Datei noch nicht im Zielverzeichnis existiert:

    Code:
    @echo off
    
    set WORKING_DIR=%~dp0
    
    set PFAD1=%WORKING_DIR%\Pfad1
    set PFAD2=%WORKING_DIR%\Pfad2
    
    pushd %PFAD1%
    
    for %%f in (*.jpg) do (
        if not exist "%PFAD2%\%%f" (
            convert -sample 535x535 "%%f" "%PFAD2%\%%f"
        ) 
    )
    
    popd
    Das ist vermutlich einfacher zu schreiben als zu versuchen Datums-Operationen in Batch zu implementieren. Natürlich versagt dieser Ansatz, wenn Du bestehende Dateien überschreibst, dann musst du natürlich die entsprechende Datei im Zielordner löschen damit sie neu generiert wird. Wenn die alten Dateien so bleiben und einfach immer neue dazu kommen ist dieser Ansatz jedoch besser als die Datums-Lösung.

    Wenn Du Powershell verwenden kannst, ist das ganze relativ einfach zu lösen:

    Code:
    $today = (Get-Date -Hour 0 -Minute 0 -Second 0)
    $pfad1 = (Join-Path $PWD -ChildPath "Pfad1")
    $pfad2 = (Join-Path $PWD -ChildPath "Pfad2")
    
    Get-ChildItem "$pfad1\*.jpg" | Where-Object LastWriteTime -ge $today | ForEach-Object { 
        convert -sample 535x535 $_.FullName (Join-Path $pfad2 -ChildPath $_.Name)
    }
    Natürlich sind das nur einfache Lösungen für ein altbekanntes Problem. Wenn du ein Tool wie GNU Make, MSBuild oder Apache ANT dafür verwenden würdest, wäre es einfacher. Du müsstest nur die Build-Regel definieren und das Tool macht den Rest: es würde automatisch nur die Dateien konvertieren welche neu dazu gekommen sind oder verändert wurden.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •