kasimodo
Goto Top

(Batch) Set in For Schleife geht nicht

Hallo,
Seit Tagen versuche ich eine Batch mit mehreren For Schleifen zu schreiben. Es gelingt mir nicht mit Set innerhalb der Schleife Variable zu setzen und diese dann in der Schleife zu nutzen.

(wenn ich weiter so auf googel gehe - dann bekomme ich bald eine persönliche begrüßung face-wink )


@echo on & setlocal
Setlocal EnableDelayedExpansion

rem PDF2TIFF (einzel Bilder)
rem Seitenweise splitten und wandeln

rem  Einstellungen

::---------------- schnip

rem SteuerDateien fuer Seitenzahl erstellen
for %%f in ("%Quelle%\*.pdf") do (  
    	For /F "tokens=2" %%i in ('%ToolDir%\pdfinfo.exe %%f ^|Findstr /i /c:"Pages"') Do  @echo %%i>%%f.sz  
		)
)

rem PDF splitten
set SeitenZahl=

for %%k in ("%Quelle%\*.pdf") do ( set /P SeitenZahl=!SEITE!<%%k.sz  

rem zum testen
echo %SeitenZahl% seitenzahl
echo %SEITE% seite

::-------------------------------
rem ab hier der restliche code in dem die variable jeweil für eine datei der Quelle gebraucht wird
::-----------------------------------

)
rem Schleife ENDE
::-------------------
rem ab hier neuer Code

@echo ENDE!



Das Problem liegt in der zweiten Schleife. Ich bekomme keinen Wert für die Variable "SeitenZahl" die ich dann weiter nutzen müsste!
Der Wert für "SeitenZahl" steht in den Dateien *.sz , die ich in der ersten Schleife für jedes *.pdf in %Quelle% erzeugt habe.

Kann jemand helfen?

Danke!
kasimodo

Content-Key: 115172

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

Printed on: April 25, 2024 at 09:04 o'clock

Member: kasimodo
kasimodo May 03, 2009 at 22:45:38 (UTC)
Goto Top
So noch etwas überlegt - und alles vereinfacht und es geht doch!
Setlocal EnableDelayedExpansion und die variable in der Schleife mit ! einfassen und nicht mit % waren die Lösung!

Ab und An ist man(n) einfach blind! 8-)

Ich hab mal meine Test echo und so im Code belassen! So ist alles auch für NichtProfis nachvollziehbar!


@echo off & setlocal
Setlocal EnableDelayedExpansion

rem PDF2TIFF (einzel Bilder)

-----------schnip --------------------

rem Dateien und Seitenzahl finden
rem =======================================
for %%f in ("%Quelle%\*.pdf") do (  

set SeitenZahl=
For /F "tokens=2" %%I in ('%ToolDir%\pdfinfo.exe %%f ^|Findstr /i /c:"Pages:"') Do (  

set SeitenZahl=%%I

rem Testausgabe
rem echo %%I = !SeitenZahl! ANZEIGE SeitenZahl

IF "!SeitenZahl!"=="1" (  
	echo weil Seitenzahl 1 = !SeitenZahl! Schleife IF 1
	echo %%f diese datei kopieren und umbenennen
	copy %%f %PrgTemp%\%%~nf-1von1.%fExt%
	rem %gcdir%\gswin32c -sDEVICE=%aFormat% -dNOPAUSE -dQUIET -dBATCH -sOutputFile="%Ziel%\%%~nf.%fExt%" "%%f"  
	) ELSE (
	echo weil Seitenzahl 2 = !SeitenZahl! Schleife IF 2
	for /L %%N IN (1, 1, !SeitenZahl!) DO (
		%gcdir%\gswin32c -sDEVICE=%aFormat% -dNOPAUSE -dQUIET -dBATCH -dFirstPage=%%N -dLastPage=%%N -sOutputFile="%PrgTemp%\%%~nf-%%Nvon!SeitenZahl!.%fExt%" "%%f"  
		)
	)
)
rem Ende Schleife 2
)
rem Ende Schleife 1

---------------- schnip -------
.....

echo ENDE FERTIG!
pause