Zähler in FOR Schleife als Parameter für Funktionsaufruf
Hallo,
ich will in einer FOR Schleife eine Funktion aufrufen, 1. Parameter soll ein Zähler sein, der sich jeweils um 1 erhöht.
Bislang habe ich dies:
Ich wäre für einen Tip sehr dankbar.
Gruß,
Rob
ich will in einer FOR Schleife eine Funktion aufrufen, 1. Parameter soll ein Zähler sein, der sich jeweils um 1 erhöht.
Bislang habe ich dies:
@echo off setlocal enabledelayedexpansion
set a=<Pfad01>
set b=<Pfad02>
set c=<Pfad03>
set PARAM3="/XD D:\test\QuellV\test2"
set PARAM4="D:\test\ZielV"
FOR %%i IN (%a% %b% %c%) DO set /A m=m+1 & ('CALL :DEMO !m! %%i %PARAM3% %PARAM4%')
:DEMO
...
goto :eof
Ich wäre für einen Tip sehr dankbar.
Gruß,
Rob
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246957
Url: https://administrator.de/contentid/246957
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo robx!
Wird's mit
besser? Alternativ dazu könntest Du auch den Zähler einfach in ":DEMO" erhöhen und brauchst ihn dann nicht zu übergeben / kannst "
Grüße
bastla
Wird's mit
@echo off & setlocal enabledelayedexpansion
set a=<Pfad01>
set b=<Pfad02>
set c=<Pfad03>
set PARAM3="/XD D:\test\QuellV\test2"
set PARAM4="D:\test\ZielV"
FOR %%i IN (%a% %b% %c%) DO set /A m+=1 & CALL :DEMO !m! %%i %PARAM3% %PARAM4%
goto :eof
:DEMO
...
goto :eof
delayedExpansion
" einsparen:@echo off & setlocal
set a=<Pfad01>
set b=<Pfad02>
set c=<Pfad03>
set PARAM3="/XD D:\test\QuellV\test2"
set PARAM4="D:\test\ZielV"
FOR %%i IN (%a% %b% %c%) DO CALL :DEMO %%i %PARAM3% %PARAM4%
goto :eof
:DEMO
set /A m+=1
...
goto :eof
Grüße
bastla
Hallo robx!
Sorry - kann ich nicht nachvollziehen ...
erzeugt bei mir folgende Ausgabe:
Die Anführungszeichen um die einzelnen Pfade ("%a%" etc) sind nur erforderlich, wenn in den Pfadangaben Leer- oder bestimmte Sonderzeichen enthalten sind (schaden aber auch nicht) ...
Grüße
bastla
Sorry - kann ich nicht nachvollziehen ...
@echo off & setlocal enabledelayedexpansion
set "a=Pfad01"
set "b=Pfad02"
set "c=Pfad03"
set PARAM3="/XD D:\test\QuellV\test2"
set PARAM4="D:\test\ZielV"
FOR %%i IN ("%a%" "%b%" "%c%") DO set /A m+=1 & CALL :DEMO !m! %%i %PARAM3% %PARAM4%
goto :eof
:DEMO
echo %*
goto :eof
1 "Pfad01" "/XD D:\test\QuellV\test2" "D:\test\ZielV"
2 "Pfad02" "/XD D:\test\QuellV\test2" "D:\test\ZielV"
3 "Pfad03" "/XD D:\test\QuellV\test2" "D:\test\ZielV"
Grüße
bastla
Hallo robx!
Grüße
bastla
trotz Anführungszeichen.
In Deinem Code hast Du in Zeile 9 (im Gegensatz zu meiner Zeile 7 oben) keine Anführungszeichen verwendet ...Grüße
bastla
Hallo Rob,
unabhängig von all den anderen Beiträgen: Das ursprüngliche Problem war wohl, dass das & vor setlocal gefehlt hat, und dann ist das eben kein eigener Befehl, sondern nur ein Anhängsel des echo.
Ich versuche daher, möglichst nie mehrere Befehle in eine Zeile zu schreiben, dann kann so etwas nicht so leicht passieren.
Gruß vom WinCobold
unabhängig von all den anderen Beiträgen: Das ursprüngliche Problem war wohl, dass das & vor setlocal gefehlt hat, und dann ist das eben kein eigener Befehl, sondern nur ein Anhängsel des echo.
Ich versuche daher, möglichst nie mehrere Befehle in eine Zeile zu schreiben, dann kann so etwas nicht so leicht passieren.
Gruß vom WinCobold