Executar um comando em todas as subpastas em um arquivo de lote

2

Eu tenho um arquivo batch que se parece com isso:

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
)

Isso funciona perfeitamente para minhas necessidades. A minha pergunta é como posso fazer isso correr em todas as subpastas?

    
por SportySpice 03.04.2015 / 13:38

1 resposta

4

Como posso executar um comando em todos os subdiretórios em um arquivo de lote?

Você pode usar for /r para isso.

Use o seguinte arquivo em lotes:

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 
  )

para / r - Repetir os arquivos (subpastas Recurse)

Syntax

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

Key

drive:path : The folder tree where the files are located.

set : A set of one or more files. Wildcards must be used. If (set) is a period character (.) then FOR will loop through every folder.

command : The command(s) to carry out, including any command-line parameters.

%%parameter' : A replaceable parameter: in a batch file use %%G (on the command line %G)

Fonte para / r - Fazer um loop pelos arquivos (criar subpastas).

Leitura Adicional

por 03.04.2015 / 14:50