Пакетный скрипт для цикла не устанавливает переменную
У меня есть пакетный скрипт, который пытается выполнить из муравейника, чтобы получить имена папок, содержащие plsql для компиляции.
for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
set FOLDER=%%a
echo *** PROCESSING FOLDER %FOLDER% ***
)
Это эхо* ОБРАБОТКА ПАПКА *
как будто переменная не устанавливается, что я уверен, что это правда, после того, как потратил слишком много времени на его проверку
Итак... Что я делаю не так?
1 ответ
По сути, это дубликат вопроса, заданного ранее сегодня. Вот мой ответ на указанный вопрос...
Вы захотите посмотреть на опцию EnableDelayedExpansion для пакетных файлов. Из вышеупомянутой ссылки:
Задержка раскрытия переменных часто полезна при работе с циклами FOR. Обычно весь цикл FOR оценивается как одна команда, даже если он занимает несколько строк пакетного сценария.
Таким образом, ваш скрипт будет выглядеть примерно так:
@echo off
setlocal enabledelayedexpansion
for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
set FOLDER=%%a
echo *** PROCESSING FOLDER !FOLDER! ***
)
В качестве альтернативы просто используйте %%a
переменная в вашем внутреннем цикле, а не создание новой переменной.