Warum so kompliziert? Ich sehe keine Notwendigkeit, die Werte in einem Array zu speichern - Sie können einfach jede Chrome-Registerkarte direkt in einer einzigen einfachen FOR / F-Schleife starten.
@echo off for /f "usebackq delims=" %%A in ("C:\New folder\controlfile.txt") do ( echo %%~A start "" chrome.exe www.google.com#q="%%~A"+EULA )
Der Grund, warum Ihr Array-basierter Code fehlgeschlagen ist, liegt darin, dass Sie vergessen haben, CALL in Ihrer START-Zeile zu verwenden.
call start "" chrome.exe www.google.com#q=%%array[%%i]%%+EULA
Ich bevorzuge die verzögerte Erweiterung lieber als den CALL-Trick, da die verzögerte Erweiterung viel schneller ist.
@echo off setlocal enableDelayedExpansion set "file=C:\New folder\controlfile.txt" set /a i=0 for /F "usebackq delims=" %%A in ("%file%") do ( set /a i+=1 set "array[!i!]=%%A" ) for /L %%A in (1,1,%i%) do ( echo !array[%%A]! start "" chrome.exe www.google.com#q=!array[%%A]!+EULA )
Angenommen, keine Ihrer Zeilen beginnt mit :
, können Sie die erste Schleife ohne CALL oder DelayedExpansion ausführen
for /f "delims=: tokens=1*" %%A in ('findstr /n "^" "%file%"') do set "array[%%A]=%%B"