vancouverona
Goto Top

Klammersetzung in Windows Batch Script

Hallo zusammen,

Kann man innerhalb einer IF Klammerung For Do Klammerungen nutzen? Oder fällt Windows dabei auf's Gesicht?

Beispiel:
Wenn eine Variable PrintPDF gesetzt ist, sollen bestimmte Dateitypen per Adobe gedruckt werden. Das Ping ist als kleine Bremse drin, damit Acrobat in Ruhe starten und drucken kann.

Code sieht folgendermaßen aus:

IF (%PrintPDF%)==(YES) (
	For %a in (LS*.pdf) Do (
		"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "%%a"  
		ping -n 10 localhost 
	)
	For %a in (RG*.pdf) Do (
		"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "%%a"  
		ping -n 10 localhost 
	)
)

Funktioinert das so? Oder hab' ich da 'nen Denkfehler?

Content-ID: 276059

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

Ausgedruckt am: 21.11.2024 um 23:11 Uhr

114757
Lösung 114757 30.06.2015 aktualisiert um 18:17:48 Uhr
Goto Top
Moin
Zitat von @Vancouverona:
Kann man innerhalb einer IF Klammerung For Do Klammerungen nutzen?
Ja kannst du
Funktioinert das so? Oder hab' ich da 'nen Denkfehler?
Bei den Laufvariablen (%a) hast du das Prozentzeichen nicht verdoppelt ...
Ansonsten kein Problem, du kannst sogar einen else-Teil machen:
if .... == ... (
   REM Mach hier was
) else (
   REM mach hier was anderes
)
(hier nur darauf achten das zwischen dem wort else und den Klammern ein Leerzeichen stehen muss.)

Für die Variablenzuweisung innerhalb von Schleifen beachte aber bitte das du dort eventuell DelayedExpansion benötigst.

Gruß jodel32
Vancouverona
Vancouverona 30.06.2015 um 18:21:20 Uhr
Goto Top
Das mit dem ELSE kannte ich, macht aber in meinem Zusammenhang keinen Sinn. An andere Stelle nutze ich das auch.

Ich war mir nur mit der verschachtelten Klammersetzung nicht ganz sicher.

Mit dem "%a" hast Du natürlich recht. Ist ein Tippfehler. Im Adobeaufruf steht dann auch schon "%%a".

Danke trotzdem.