Почему так сложно? Я не вижу необходимости хранить значения в массиве - вы можете просто запустить каждую вкладку Chrome непосредственно в одном простом цикле FOR / F.
@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 )
Причина, по которой ваш код на основе массива потерпел неудачу, заключается в том, что вы забыли использовать CALL в строке START.
call start "" chrome.exe www.google.com#q=%%array[%%i]%%+EULA
Я предпочитаю использовать отложенное расширение вместо трюка CALL, так как отложенное расширение намного быстрее.
@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 )
Предполагая, что ни одна из ваших строк не начинается с :
, вы можете сделать первый цикл без CALL или DelayedExpansion
for /f "delims=: tokens=1*" %%A in ('findstr /n "^" "%file%"') do set "array[%%A]=%%B"