Я Пакет-новичок ...
Этот "инструмент" предназначен для автоматизации похудения Windows (XP) путем отключения определенных системных драйверов, DLL и EXE-файлов. Вместо прямого удаления я хочу переименовать на месте, таким образом "удаляя" их из ОС, но не упуская из виду их принадлежность (если нужно что-то "восстанавливать"). Переименование выполняется путем добавления нового суффикса к существующему имени файла (например, «wdmaud.drv.group_1»). Суффикс переименования должен быть другой входной переменной.
Список целей составляет ок. Длина 1100 файлов (разделенных на различные группы / фазы), поэтому о ручном переименовании не может быть и речи. Каждая группа будет обрабатываться в отдельном прогоне командного файла, варьируя входной файл списка целей для каждого выполнения.
Целевой список - это простой текстовый файл, по одному имени файла в строке (других данных в файлах нет). Количество записей на группу варьируется. Список целей будет выглядеть так:
-- example start --
netapi.dll
netcfgx.dll
netdde.exe
netevent.dll
nic1394.sys
-- example end --
Имена файлов могут быть в верхнем, нижнем регистре или в формате MiXeD. Файлы могут присутствовать в нескольких папках в иерархии C:\Windows или могут отсутствовать вообще. Если файл не найден где-либо в системе, его имя должно быть записано в текстовый файл, по одной записи на строку.
Конкретные папки интересов:
C:\WINDOWS\
C:\WINDOWS\system\
C:\WINDOWS\system32\
C:\WINDOWS\system32\dllcache
C:\WINDOWS\system32\drivers
... но может измениться по мере развития.
Основываясь на ответе на stackoverflow.com, я начал так:
@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 <<