@bazkin

Почему в цикле for так странно ведет себя переменная?

Всем привет!
Странно ведет себя переменная в скрипте. Есть файл в котором построчно занесены пути к файлам:
"d:\test\file1.txt"
"d:\test\file2.txt"
"d:\test\file3.txt"

Есть bat-cкрипт который из файла считывает построчно пути, меняет в нем букву диска и передает дальше:
SetLocal EnableDelayedExpansion
FOR /F %%i IN (d:\test\tmp.txt) DO (
   SET str=%%i
   SET str=!str:~2,-1!
   echo %str%
)

Проблема в непонятном поведении переменной %str%. Она может быть всегда пуста, может принимать значение как надо, т.е. ":\test\file1.txt :\test\file2.txt :\test\file3.txt", а может всегда быть :\test\file3.txt

Тот же самый скрипт на другом сервере отрабатывается всегда правильно. Оба сервера 2012R2Std 9600build.
Подскажите в чем может быть проблема?
  • Вопрос задан
  • 991 просмотр
Решения вопроса 1
Замените внутри цикла
echo %str%
на
echo !str!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@bazkin Автор вопроса
Спасибо большое! Используя восклицательный знак(!) вместо процента (%) все заработал!
А можно уточнить, почему в этом случае используется именно данный синтаксис?
Получается это связано с режимом связывания времени выполнения ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы