white155, делать сие весьма неудобно (ибо где три, там и четыре, и пять), хотя и можно.
Хранение во внешнем файле и разбор посредством «for /f» обычно применяют для однотипного набора данных, например, имён машин, с которыми надо проделать однотипную операцию: очередное значение извлекается, подставляется в переменную, выполняется некая процедура, затем эти действия повторяются.
Возможно, для Вашей задачи лучше использовать банальные параметры пакетного файла:
читать дальше »
0001.cmd
Код:
![Выделить весь код](images/misc/selectcode.png)
@echo off
setlocal enableextensions enabledelayedexpansion
set sVar1=%~1
set sVar2=%~2
set sVar3=%~3
set sVar4=%~4
set sVar5=%~5
echo sVar1=[%sVar1%]
echo sVar2=[%sVar2%]
echo sVar3=[%sVar3%]
echo sVar4=[%sVar4%]
echo sVar5=[%sVar5%]
endlocal
exit /b 0
наподобие:
Код:
![Выделить весь код](images/misc/selectcode.png)
0001.cmd 0001 0002 "00 03" "0004" "00 00 05"
Результат:
Цитата:
Код: ![Выделить весь код](images/misc/selectcode.png)
sVar1=[0001]
sVar2=[0002]
sVar3=[00 03]
sVar4=[0004]
sVar5=[00 00 05]
|
Впрочем, если допустимо условиями задачи — можно попытаться использовать псевдонумерацию переменных:
читать дальше »
0002.cmd
Код:
![Выделить весь код](images/misc/selectcode.png)
@echo off
setlocal enableextensions enabledelayedexpansion
set sInFile=.\0001.txt
set /a iCounter = 0
for /f "usebackq delims=" %%i in ("%sInFile%") do (
set /a iCounter += 1
set sVar!iCounter!=%%i
)
for /l %%i in (1, 1, %iCounter%) do echo sVar%%i=[!sVar%%i!]
endlocal
exit /b 0
0001.txt, лежащий в текущем каталоге при вызове пакетного файла
0002.cmd:
Код:
![Выделить весь код](images/misc/selectcode.png)
Hello World
Мама мыла раму
OSZone.Net
Результат:
Цитата:
Код: ![Выделить весь код](images/misc/selectcode.png)
sVar1=[Hello World]
sVar2=[Мама мыла раму]
sVar3=[OSZone.Net]
|
Ещё один вариант — держать как имена переменных, так и сами значения в текстовом файле, наподобие:
читать дальше »
0002.txt
Код:
![Выделить весь код](images/misc/selectcode.png)
Var1=Hello World
MyVar=Мама мыла раму
LastVar=OSZone.Net
но при этом пакетный файл:
0003.cmd
Код:
![Выделить весь код](images/misc/selectcode.png)
@echo off
setlocal enableextensions enabledelayedexpansion
set sInFile=.\0002.txt
for /f "usebackq tokens=1,2 delims==" %%i in ("%sInFile%") do (
set %%i=%%j
)
echo Var1 =[%Var1%]
echo MyVar =[%MyVar%]
echo LastVar=[%LastVar%]
endlocal
exit /b 0
должен «знать» имена переменных.
Результат:
Цитата:
Код: ![Выделить весь код](images/misc/selectcode.png)
Var1 =[Hello World]
MyVar =[Мама мыла раму]
LastVar=[OSZone.Net]
|