Windows Batch

hagu81

Aktives Mitglied
Ich habe da ein Problem mit einer simplen Batch datei.

Code:
set /A zaehler=0
for %%f in (C:\ordner\*.JPG) do (
set /A zaehler=zaehler+1
echo %zaehler%
)
echo %zaehler%



Wieso wird ist die Variable %zaehler% innerhalb der For-Schleife "0"?
Nach der For Schleife kann Sie ausgelesen werden.
 
Zuletzt bearbeitet von einem Moderator:

Nebuk

PCtipp-Moderation
Teammitglied
Hi, hagu81

Leider versteh ich deine Frage nicht so richtig. Könntest du genau schreiben, was genau nicht so funktioniert, wie es du gerne hättest?

Wenn ich die *.bat-Datei ausführe, so zeigt es mir korrekt die Anzahl der in dem Ordner befindenden Bilder an.

PS. Ich hab es in die richtige Kategorie verschoben.

Gruss Nebuk
 

hagu81

Aktives Mitglied
Hallo Nebuk, danke für deine Hilfe

Ich habe hier das "Original" Skript;

Code:
@echo off
  setlocal enabledelayedexpansion 
  set ProgramsPath= "C:\Program Files\Hugin2010.4.0\bin\"
  set InputPath= "C:\autopano\input\"
  set /A zaehler=0
  for %%f in (C:\autopano\input\sempach\*.JPG) do (
    set /A zaehler=zaehler+1
    echo %zaehler%
    IF %zaehler%==1 set dat1=%%f
    IF %zaehler%==2 set dat2=%%f
    IF %zaehler%==3 (
    set dat3=%%f
    set /A zaehler=0
    )
    start enfuse.exe enfuse --wExposure=1 --wSaturation=0.5 --wContrast=0 --wMu=0.5 --wSigma=0.2 --HardMask --depth=8 -o output.tif %dat1% %dat2% %dat3%
)
echo %zaehler%

Ziel des Skriptes ist, ein Ordner nach Bildern zu durchsuchen. Immer 3 Bilder zusammen sollen an das Programm "Enfuse" mittels Parameter übergeben werden.
Den Zähler habe ich, damit ich immer drei Dateien herauslesen kann, und danach den Zähler wieder zurück setzen kann.
Die Variable Zähler scheint aber nicht abrufbar zu sein innerhalb der FOR-Schleife.

Gibt es da eine bessere Lösung?
 
Zuletzt bearbeitet von einem Moderator:

froeschli

Stammgast
Die Variable Zähler scheint aber nicht abrufbar zu sein innerhalb der FOR-Schleife.

Gibt es da eine bessere Lösung?

Was meinst du mit "scheint nicht abrufbar zu sein"? Hast du keinen Wert in der Variable? Kriegst du eine Fehlermeldung wenn du dieses Skript laufen lässt?

Gruss froeschli

EDIT:
Habe den Fehler gefunden:

Die Option
Code:
EnableDelayedExpansion
ermöglicht dir zwar, Variablen innerhalb der For-Schlaufe auszuwerten, aber nur wenn du sie entsprechend mit
Code:
!Variable!
aufrufst. In deinem Fall also folgendes:

Code:
@echo off
  setlocal enabledelayedexpansion 
  set ProgramsPath= "C:\Program Files\Hugin2010.4.0\bin\"
  set InputPath= "C:\autopano\input\"
  set /A zaehler=0
  for %%f in (C:\autopano\input\sempach\*.JPG) do (
    set /A zaehler=zaehler+1
    echo !zaehler!
    IF !zaehler!==1 set dat1=%%f
    IF !zaehler!==2 set dat2=%%f
    IF !zaehler!==3 (
    set dat3=%%f
    set /A zaehler=0
    start enfuse.exe enfuse --wExposure=1 --wSaturation=0.5 --wContrast=0 --wMu=0.5 --wSigma=0.2 --HardMask --depth=8 -o output.tif !dat1! !dat2! !dat3!
    )
)
echo %zaehler%

Bitte beachte folgende Änderungen:
  • Zur Auswertung wird !zaehler! statt %zaehler% verwendet.
  • Der Aufruf von enfuse sollte vor der abschliessenden Klammer stehen.
  • Zu Auswertung wird !dat1! statt %dat1% verwendet. (analog dazu !dat2! und !dat3!
 
Zuletzt bearbeitet:
Oben