Я работаю с cmd и пытаюсь установить переменную в цикле. Вот код, у меня есть:CMD пытается установить переменную в цикле
for /d %%a in ("F:\backup*") do set folder=%%a
ECHO %folder%
PAUSE
Я хочу, чтобы искать папку с именем, начинающимся с «резервным копированием» на диск F и сохранить имя этой папки в папке% переменной%. Так, например, если папка будет называться «backup 2017-01-18», я бы хотел, чтобы она была сохранена в var.
Вместо этого он, похоже, ничего не устанавливает, поскольку ECHO просто печатает, что «ECHO включен». Петля for верна, и папка также существует (я уже использую этот фрагмент кода для другой партии с robocopy).
Я мог бы теоретически поместить весь мой код внутри цикла FOR и использовать %% a вместо% folder% var, но это похоже на хакерское решение.
Все решения, которые я нашел до сих пор, указывали на использование EnableDelayedExpansion. Я изменил код, чтобы использовать его так:
Setlocal EnableDelayedExpansion
for /d %%a in ("F:\backup*") do set folder=%%a
ECHO !folder!
PAUSE
Но теперь ECHO печатает "! Папку!" как если бы он не обнаружил переменную. Если я вернусь к папке ECHO%%, я снова узнаю, что «ECHO включен».
EDIT: Я нашел здесь проблему. Я также запускал другой пакетный файл в папке резервного копирования. Оказывается, ROBOCOPY (который я использовал в этой партии) устанавливает закрывающую папку скрытой, системной и readonly по умолчанию (даже если скопированные файлы не скрыты или система o_0). Когда я удалил атрибуты HSR в каталоге, код, отправленный здесь, начал работать нормально (исходная версия).
Является ли этот набор коды внутри другого блока кода? Ваш первый набор кода отлично подходит для меня сам. – Squashman
Нет, это весь пакетный файл, который я запускаю вручную. – ilozen
Тогда F: \ backup * не существует. – Squashman