Je suis un débutant dans le lot ...
Cet "outil" permet d’automatiser l’amincissement de Windows (XP) en désactivant certains pilotes système, fichiers DLL et EXE. Au lieu de le supprimer, je souhaite le renommer sur place, en le "supprimant" de l'OS, sans perdre de vue à quoi il appartient (si cela devait être "restauré"). Renommer est accompli en ajoutant un nouveau suffixe au nom de fichier existant (par exemple: "wdmaud.drv.group_1"). Le suffixe de renommage devrait être une autre variable d'entrée.
La liste de cibles est d'env. 1100 fichiers longs (divisés en divers groupes / phases), il est donc hors de question de renommer manuellement. Chaque groupe sera traité dans une exécution distincte du fichier de commandes, en modifiant le fichier d'entrée de la liste de cibles pour chaque exécution.
La liste de cibles est un fichier texte, un nom de fichier par ligne (aucune autre donnée dans les fichiers). Le nombre d'entrées par groupe varie. La liste de cibles ressemblera à ceci:
-- example start --
netapi.dll
netcfgx.dll
netdde.exe
netevent.dll
nic1394.sys
-- example end --
Les noms de fichiers peuvent être en majuscules, minuscules ou MiXeD. Les fichiers peuvent être présents dans plusieurs dossiers de la hiérarchie C: \ Windows ou peuvent ne pas l'être du tout. Si aucun fichier n’est trouvé dans le système, son nom doit être écrit dans un fichier texte, une entrée par ligne.
Les dossiers d’intérêt spécifiques sont:
C:\WINDOWS\
C:\WINDOWS\system\
C:\WINDOWS\system32\
C:\WINDOWS\system32\dllcache
C:\WINDOWS\system32\drivers
... mais peut changer à mesure que le développement avance.
Basé sur une réponse à stackoverflow.com, j'ai commencé ainsi:
@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 <<