Предполагается, что ваш file.txt
построен как:
user1 password1
user2 password2
user3 password3
...
Это именно то, что вы пытались сделать в 2 циклах (кроме попытки установить массив)
@echo off
setlocal enabledelayedexpansion
for /F "usebackq tokens=1,*" %%a in ("file.txt") do (
set varUser=%%a
set varPass=%%b
echo user=!varUser! password=!varPass!
winscp.com /script=script.txt /parameter put !varUser!,!varPass!
)
То естьно в этом нет необходимости, поскольку вы можете просто использовать мета-переменные как есть для запуска команд.
@echo off
for /F "usebackq tokens=1,*" %%a in ("file.txt") do (
winscp.com /script=script.txt /parameter put %%a,%%b
)
Если вы действительно хотите установить массив и использовать его, как вы это сделали, по неизвестной причине:
@echo off
setlocal enabledelayedexpansion
set cnt=0
for /f "usebackq tokens=1,*" %%a in ("file.txt") do (
set /a cnt+=1
set varUser[!cnt!]=%%a
set varPass[!cnt!]=%%b
)
for /l %%i in (1,1,%cnt%) do (
echo user=!varUser[%%i]! password=!varPass[%%i]!
)
Если, с другой стороны, ваш file.txt
находится в полной форме списка, например:
user1
password1
user2
password2
user3
password3
...
Тогда это, вероятно, то, что вы хотели получить :)
@echo off
setlocal enabledelayedexpansion
set cnt=0
for /f "usebackq delims=" %%a in ("file.txt") do (
set /a cnt+=1
set array[!cnt!]=%%a
)
set handler=0
for /l %%i in (1,1,%cnt%) do (
set /a handler+=1
call set varUser=%%array[!handler!]%%
set /a handler+=1
call set varPass=%%array[!handler!]%%
echo user=!varUser! password=!varPass!
winscp.com /script=script.txt /parameter put !varUser!,!varPass!
if "!handler!"=="!cnt!" goto :eof
)
Последний пример - это то, что вам нужно, основываясь на вашем последнем комментарии.