Пакетное чтение: чтение текстового файла, содержащего список файлов с переменными среды (например: %appdata%), не будет «разрешено» при использовании

#windows #batch-file #cmd

#Windows #пакетный файл #cmd

Вопрос:

 for /F "tokens=*" %%A in (.a.config) do (
echo "%%A"
copy /y "%%A" .
)
 

Если строка в файле.conf содержит переменную среды, я просто получаю это эхо (например: «%appdata% ……»), а не абсолютный путь. Как решить проблему?

Ответ №1:

Это делает это:

 for /F "tokens=*" %%A in (.a.config) do (
  call echo "%%A"
  call copy /y "%%A" .
)
 

Чтобы избежать необходимости вводить call перед каждой строкой, в которой используется %%A, вы можете присвоить его переменной:

 setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (.a.config) do (
  call set expandedA=%%A
  echo "!expandedA!"
  copy /y "!expandedA" .
)
 

Комментарии:

1. э-э, я знал об этом десятки лет назад, но забыл. Спасибо Вам за вашу помощь!