2014-12-05 2 views
0

Я посмотрел на эту тему: Testing for file attribute in batch fileпакетных файлов: рекурсивно проверить атрибуты файлов

Скрипт прекрасно работает для указанной папки в% ВХОДА%, но если я хочу посмотреть в подпапки, это не Работа. Когда я добавляю предложенный флаг/R, ничего не происходит. Правильно ли синтаксис?

for /R %%F in (%INPUT%) do (...) 

благодаря Скотт

ответ

0

Вы должны немедленно указать базовый каталог после/R. Все, что указано в круглых скобках, будет добавлено к каждому подкаталогу в дереве. Таким образом, вы можете использовать, чтобы получить . сам каталог:

for /R %INPUT% %%F in (.) do (...) 

Кроме того, одна странная вещь, которую я только что обнаружил, что если вы используете синтаксис enabledelayedexpansion, то он не работает; он выполняет только тело для базового каталога, а не для любого подкаталога. Таким образом, следующий не будет работать, вы enabledelayedexpansion включена ли или нет:

for /R !INPUT! %%F in (.) do (...) 

Другой причуда Dosbatch.

Редактировать: Чтобы ответить на ваши комментарии, становится актуальным то, что содержит .... Это должно работать, если вы хотите, чтобы получить атрибуты как в текущем каталоге итерации и файлов, содержащихся в текущем каталоге итерации:

for /R %INPUT% %%F in (.) do (attrib %%F& attrib %%F\*) 

Edit: Вот еще один из возможных решений, которые, вероятно, будет медленнее, но с другой стороны рука может сделать код более удобным для записи. Но с другой стороны, он будет иметь проблемы с пробелами в именах файлов:

for /f %%i in ('dir /b /s %INPUT%') do (attrib %%i) 
+0

Спасибо, но нет, что не работает. Он отображает атрибут чтения/записи основного каталога и подкаталога, но не файлов. И да, у меня есть разрешенный набор расширений ... который (если честно), я не знаком. –

+0

Возможно, мой комплект неправильный? set INPUT = C: \ Filenet \ Work \ Current \ IDCMS1 \ IM \ Cloud \ Services \ Cloudant Добавление \\ * в конец ничего не делает. –

+0

Сообщите мне, если эти решения работают на вас. – bgoldst

0

Есть ли какая-либо конкретная причина не использовать

attrib /s "%input%" 

Wheter вход в виде «C: \ path \ filemask.ext "

+0

Да, причина в том, что я хочу некоторую условную обработку. Если атрибут является read-write, я хочу использовать GOTO: какой-то другой раздел пакета. –

Смежные вопросы