Виконайте команду у всіх підпапках у пакетному файлі


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
)

Це прекрасно працює для моїх потреб. Моє запитання - як зробити цей пробіг у всіх підпапках?

Відповіді:


4

Як запустити команду run у всіх підкаталогах у пакетному файлі?

Ви можете використовувати 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 - прокручування файлів (повторне використання папок)

Синтаксис

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

Ключ

drive:path : Дерево папок, де розташовані файли.

set : Набір одного або декількох файлів. Необхідно використовувати символи підстановки. Якщо (set) - символ періоду (.), То FOR проходитиме через кожну папку.

command : Команди, які потрібно виконати, включаючи будь-які параметри командного рядка.

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

Джерело для / r - прокручування файлів (Recurse subfold).


Подальше читання


Я вже зрозумів це, перш ніж побачити вашу відповідь. Ваше рішення ідентичне моєму, дякую!
SportySpice
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.