1

Я Пакет-новичок ...

Этот "инструмент" предназначен для автоматизации похудения 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 <<

0