Я хочу использовать переменную, которая определена внутри цикла for, и использовать ее для вызова предопределенной переменной.
Например: для запуска программы "Slack"
мне нужно вызвать переменную %Slack%
.Пакетный файл примет ваш ввод, поэтому если я введу "Slack"
, переменной !filename[%%i]!
будет присвоено "Slack"
.Как только это будет сделано, я хочу позвонить %Slack%
, используя !filename[%%i]!
.Согласно логике: %!filename[%%i]!%
Использование %!filename[%%i]!%
приведет к сбою и закрытию пакетного файла.
Установка set file=!filename[%%i]!
и запуск с %file%
ничего не даст.
Какой-нибудь умный трюк?
@echo off
setlocal EnableDelayedExpansion
:: Predefined variables
for /f "delims== tokens=1,2" %%G in (D:\programs.txt) do set %%G=%%H
set /P "filenames=Enter programs to install: "
:: Puts input into array
set n=0
for %%a in (%filenames%) do (
set /A n+=1
set "filename[!n!]=%%~a"
)
:: Run variables imported from programs.txt
for /L %%i in (1,1,%n%) do (
:: This is where I want !filename[%%i]! to be called as %!filename[%%i]!%
)
pause
endlocal
program.txt пример
Slack=C:\Users\username\AppData\Local\slack\slack.exe
Text=C:\textfile.txt
Program=C:\program.bat & C:\program_license.txt