Wow! Original npocmaka's code funktioniert nicht!
==> D:\bat\SO\37639143npocmaka.bat Wow! Original npocmaka's code does not work!
Number of processed arguments: 1
Sie müssen verzögerte Expansion wechseln wie folgt:
SETLOCAL EnableExtensions DisableDelayedExpansion
set argCount=0
for %%x in (%*) do (
set /A argCount+=1
setlocal EnableDelayedExpansion
if !argCount! gtr 3 (
endlocal
echo element after 3 argument %%x
) else endlocal
)
echo Number of processed arguments: %argCount%
Ausgang:
==> D:\bat\SO\37639143.bat Wow! Original npocmaka's code does not work!
element after 3 argument code
element after 3 argument does
element after 3 argument not
element after 3 argument work!
Number of processed arguments: 7
Oder auslassen delayed expansion überhaupt und im nächsten Code-Schnipsel (mein unverändert Probe-Skript) ändern:
@echo OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
echo(
echo before any shift: all %%* = [%*]
echo(
set /A "ii=0"
echo param %%%ii% = %0
:loopfor
set /A "ii+=1"
echo param %%%ii% = %1
SHIFT /1
if not [%1]==[] goto :loopfor
echo(
echo after %ii% shifts: %%* = [%*]
goto :eof
Ausgang:
==> cliparser.bat Wow! Original npocmaka's code does not work!
before any shift: all %* = [Wow! Original npocmaka's code does not work!]
param %0 = cliparser.bat
param %1 = Wow!
param %2 = Original
param %3 = npocmaka's
param %4 = code
param %5 = does
param %6 = not
param %7 = work!
after 7 shifts: %* = [Wow! Original npocmaka's code does not work!]
==>
Der 'shift' Befehl für Parameter verwendet wird, größer ist als 9. Siehe' Shift/'?. Machen Sie im Grunde eine Schleife, bis der n-te Parameter leer ist, und geben Sie jedesmal eine Verschiebung aus. –
http://stackoverflow.com/questions/19835849/batch-script-iterate-through-arguments/19837690#19837690 – Aacini