Пакетный файл Windows: переименование файлов (возможно, в нескольких папках) на основе входного файла (целевых имен файлов) - PullRequest
0 голосов
/ 06 октября 2011

Я новичок, так что примите мои извинения и заранее спасибо!

Этот «инструмент» предназначен для автоматизации уменьшения веса Windows (XP) путем отключения определенных системных драйверов, DLL и EXE-файлов. Вместо прямого удаления я хочу переименовать на месте, таким образом «удаляя» их из ОС, но не упуская из виду их принадлежность (если нужно что-то «восстанавливать»). Переименование выполняется путем добавления нового суффикса к существующему имени файла (например, «wdmaud.drv.group_1»). Суффикс переименования должен быть другой входной переменной.

Целевой список составляет ок. Длина 1100 файлов (разделенных на различные группы / фазы), поэтому о ручном переименовании не может быть и речи. Каждая группа будет обрабатываться в отдельном прогоне пакетного файла, варьируя входной файл списка целей для каждого выполнения.

Target-list - это простой текстовый файл, по одному имени файла в строке (других данных в файлах нет). Количество записей на группу варьируется. Список целей будет выглядеть так:

    -- example start --
    netapi.dll
    netcfgx.dll 
    netdde.exe 
    netevent.dll 
    neth.dll
    netid.dll
    netrap.dll
    nic1394.sys
    -- example end --

Имена файлов могут быть в верхнем, нижнем регистре или в регистре MiXeD. Файлы могут присутствовать в более чем одной папке в иерархии C: \ Windows или могут отсутствовать вообще. Если файл не найден нигде в системе, его имя должно быть записано в текстовый файл, одна запись на строку.

Конкретные интересующие папки:

    C:\WINDOWS\
    C:\WINDOWS\system\
    C:\WINDOWS\system32\
    C:\WINDOWS\system32\dllcache
    C:\WINDOWS\system32\drivers

Переименование будет выполнено путем подключения целевого диска ОС к другому компьютеру XP, поэтому заблокированные системные файлы не должны быть проблемой.

Любая помощь, которую вы можете предложить, будет принята с благодарностью.

1 Ответ

1 голос
/ 06 октября 2011

двойной FOR цикл может помочь вам ... это очень простой пример, только для начала

for /f "tokens=*" %%f in (%targetlist%) do (
  for /f "tokens=*" %%d in (%dirlist%) do (
    if exist "%%d\%%f" echo %%f found in %%d
  )
)

см. HELP FOR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...