CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения

Ответить
Аватара пользователя
CyberMuesli

CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения

Сообщение CyberMuesli »

Все вроде правильно, но при произвольном имени переменной окружения не работает, работает только при явном указании имени. Как выкрутиться?





Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set VName=FARHOME
echo for /d %%i in ("far.exe") do echo %%~$!VName!:i
echo for /d %%i in ("far.exe") do echo %%~$FARHOME:i
for /d %%i in ("far.exe") do echo %%~$!VName!:i
for /d %%i in ("far.exe") do echo %%~$FARHOME:i
goto :eof
Аватара пользователя
Iska

Re: CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения

Сообщение Iska »

Скажите, что Вы хотите получить в итоге и зачем именно так. Не ясно, зачем нужно использовать подобное.
Аватара пользователя
Iska

Re: CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения

Сообщение Iska »

Цитата Iska:



Скажите, что Вы хотите получить в итоге
CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения




Надо найти некий файл, при этом искать его по путям, которые заданы в произвольной переменной окружения. Файл произвольный, для примера far.exe Имя переменной окружения произвольное, для примера FARHOME. В примере файл ищется, если FARHOME явно прописана в коде: %%~$FARHOME:i. Написать универсальный код не удается: раскрытие переменной VName в ее значение FARHOME не работает в конструкции %%~$!VName!:i






Цитата Iska:



Не ясно, зачем нужно использовать подобное.
CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения




Пример сделан для наглядности, а не для практического применения. Он показывает (два echo), что команда для for формируется правильно в обоих случаях, но результаты for разные, не работает раскрытие переменной VName в ее значение FARHOME. Однократный запуск примера снял бы все вопросы. Привожу результаты:





C>test.bat

for /d %i in ("far.exe") do echo %~$FARHOME:i

for /d %i in ("far.exe") do echo %~$FARHOME:i

Режим вывода команд на экран (ECHO) отключен.

C:\Program Files\Far\Far.exe
Аватара пользователя
Iska

Re: CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения

Сообщение Iska »

Что мешает в этом гипотетическом примере «раскрыть» переменную окружения предварительно, перед входом в разбор; наподобие:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sVarName=FARHOME
call set sVar=%%%sVarName%%%
rem Или
rem set sVar=!%sVarName%!
for %%i in (far.exe) do echo %%~$sVar:i
endlocal
exit /b 0

?




Цитата CyberMuesli:



Однократный запуск примера снял бы все вопросы.
CMD/BAT - поиск файла по путям, заданным в произвольной переменной окружения




Ан нет. Можно запускать хоть сотню раз, коллега. Однако ж, сие не даст ответ на заданные мною вопросы. Для этого нужны именные пояснения (которые Вы дали постом выше).
Ответить

Вернуться в «Скриптовые языки администрирования Windows»