2

У меня есть пакетный файл, который выглядит так:

IF EXIST icon.ico (
    attrib -S -H -R desktop.ini
    echo f | xcopy /H /Y "%~dp0desktop.ini.txt" desktop.ini
    attrib +S +H +A desktop.ini
)

Это отлично работает для моих нужд. У меня вопрос, как мне сделать это запустить во всех подпапках?

1 ответ1

4

Как выполнить команду запуска во всех подкаталогах в командном файле?

Вы можете использовать for /r для этого.

Используйте следующий пакетный файл:

for /r "starting_directory" %%a in (.) do (
  pushd %%a
  if exist icon.ico (
    attrib -s -h -r desktop.ini
    echo f | xcopy /h /y "%~dp0desktop.ini.txt" desktop.ini
    attrib +s +h +a desktop.ini
    ) 
  popd 
  )

for /r - перебирать файлы (подпапки Recurse)

Синтаксис

FOR /R [[drive:]path] %%parameter IN (set) DO command

ключ

drive:path : дерево папок, в котором находятся файлы.

set : набор из одного или нескольких файлов. Подстановочные знаки должны быть использованы. Если (установлено) является символом точки (.), То FOR будет перебирать каждую папку.

command : команда (ы) для выполнения, включая любые параметры командной строки.

%% параметр`: заменяемый параметр: в пакетном файле используйте %% G (в командной строке% G)

Источник для /r - циклический просмотр файлов (подпапки Recurse).


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .