Eu sou um novato em lote ...
Esta "ferramenta" é para automatizar o emagrecimento do Windows (XP), desabilitando certos arquivos de driver, DLL e EXE do sistema. Em vez de excluir completamente, desejo renomear no local, "removendo-os" do sistema operacional, mas sem perder de vista onde eles pertencem (qualquer necessidade de ser "restaurada"). A renomeação é realizada anexando um novo sufixo ao nome de arquivo existente (por exemplo: "wdmaud.drv.group_1") O sufixo de renomeação deve ser outra variável de entrada.
A lista de destino é de aprox. 1100 arquivos longos (divididos em vários grupos / fases), portanto, a renomeação manual está fora de questão. Cada grupo será processado em uma execução separada do arquivo de lote, variando o arquivo de entrada da lista de destino para cada execução.
Target-list é um arquivo de texto simples, um nome de arquivo por linha (nenhum outro dado nos arquivos). Número de entradas por grupo varia. A lista de alvos ficará assim:
-- example start --
netapi.dll
netcfgx.dll
netdde.exe
netevent.dll
nic1394.sys
-- example end --
Os nomes dos arquivos podem estar no caso UPPER, lower ou MiXeD. Os arquivos podem estar presentes em mais de uma pasta na hierarquia C: \ Windows - ou podem não estar presentes. Se um arquivo não for encontrado em nenhum lugar do sistema, seu nome deverá ser escrito em um arquivo de texto, uma entrada por linha.
As pastas específicas de interesse são:
C:\WINDOWS\
C:\WINDOWS\system\
C:\WINDOWS\system32\
C:\WINDOWS\system32\dllcache
C:\WINDOWS\system32\drivers
... mas pode mudar conforme o desenvolvimento avança.
Com base em uma resposta em stackoverflow.com, comecei assim:
@echo off
set suffix=GROUP_1
set targetlist=GROUP_1.txt
set dirlist=folders.txt
for /f "tokens=*" %%f in (%targetlist%) do (
for /f "tokens=*" %%d in (%dirlist%) do (
if exist "%%d\%%f" ren "%%d\%%f.%%suffix"
echo %%f found in %%d >> foundlist.txt
)
)
=============================================== ===============================
:: -----------------------------------------------------------------::
:: Batch Process to Rename-In-Place System Files from an Input List ::
:: -----------------------------------------------------------------::
@echo off
:: >> clear files from previous run <<
if exist RENAMED_files.txt DEL RENAMED_files.txt
if exist NOTFound_files.txt DEL NOTFound_files.txt
:: >> file rename-suffix reflects step name <<
set suffix=Steppe_01
:: >> target file list to rename <<
set targetlist=Steppe_01_files.txt
:: >> list of folders to search <<
set dirlist=folders.txt
:: >> PROCESS <<
for /f "tokens=*" %%f in (%targetlist%) do (
echo. >> NOTFound_files.txt
for /f "tokens=*" %%d in (%dirlist%) do (
if NOT exist "%%d\%%f" echo %%f not in %%d >> NOTFound_files.txt
if exist "%%d\%%f" REN "%%d\%%f" "%%f.%suffix%"
if exist "%%d\%%f.%suffix%" echo renamed %%f in %%d >> RENAMED_files.txt
)
)
:: >> end of process <<