Provavelmente é um erro muito simples, mas sinto falta dele ...
Seus for
loops estão processando todas as linhas do arquivo, então apenas o último valor no arquivo é armazenado.
Você pode simplificar seu arquivo em lote e usar um único loop for
junto com a expansão atrasada e um contador
Aqui está um pequeno arquivo de lote que fornece a solução básica. Combine isso com o seu arquivo de lote.
test.cmd:
@echo off
setlocal enabledelayedexpansion
set /a _index=1
for /f "delims=" %%a in (keylist.txt) do (
set "key!_index!=%%a"
set /a _index+=1
)
echo searching for !key1!, !key2!, !key3!, !key4!, !key5!
endlocal
Exemplo de saída:
> type keylist.txt
1
2
3
4
5
> test
searching for 1, 2, 3, 4, 5
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
- para - Realize condicionalmente um comando várias vezes.
- definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.