Возникла проблема с файлом .bat - PullRequest
2 голосов
/ 31 октября 2011

У меня есть мини-рекурсивная функция, которая находит и скрывает все файлы .mta. Похоже, что

For /r %1 in (*.mta) do attrib +h "%1"

Когда я пытаюсь выполнить его из командной строки вручную, он работает правильно

enter image description here

Я создал .bat файл. Код выглядит так

D:
For /r %1 in (*.mta) do attrib +h "%1"
pause 

Пытался выполнить этот файл. Получаю этот экран

enter image description here

Что не так с кодом?

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Попробуйте с:

For /r %%i in (*.mta) do attrib +h "%%i"

(И назовите ваш файл .cmd, он выглядит более современно.)

Не используйте %1, который ссылается на аргументы вашего скрипта, поэтому не будет работать . Используйте % в командной строке и %% в пакетных сценариях.

0 голосов
/ 31 октября 2011

%1 - аргумент командной строки, передаваемый в пакетный файл, который в данном случае оказывается пустым.Это означает, что ваш for синтаксис цикла неверен.Вместо этого используйте другое имя переменной, например% f:

for /r %f in (*.mta) do attrib +h "%f"

Если бы вы использовали свою версию и надели это:

c:\> yourbatch.bat f

, тогда% f расширился бы до 'f ', и вы получите:

for /r f in (*.mta) do attrib +h "f"

, что также будет неверно.

...