Supprimer des fichiers dans chaque profil utilisateur
Fermébrucine Messages postés 18707 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 23 janvier 2025 - 9 juin 2023 à 10:50
- Supprimer des fichiers dans chaque profil utilisateur
- Qui regarde mon profil facebook - Guide
- Comment supprimer une page dans word - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer compte instagram - Guide
- Qui regarde mon profil instagram - Guide
2 réponses
Ce que tu veux est la liste des utilisateurs?
En faisant un dir /b C:\Users tu les aurais ... mais avec sans doute autre chose.
Pourquoi ne pas utiliser rd /S / Q %%i pour tout virer?
Je te suggère de placer le code mentionné dans un fichier *.bat et de l'appeler à partir d'un autre, pour éviter les problèmes d'expansion retardée.
9 juin 2023 à 10:26
Merci pour vos réponse.
J'avais en effet bien vu l'autre répertoire qui injecte des raccourcis au menu démarrer . L idées sera aussi de supprimer le contenu de C:\ProgramData\Microsoft\Windows\Start Menu\Programs
Pour préciser le pourquoi de cette manip. Si j'active la gpo "masquer les programmes communs du menu démarrer" alors je perds en même temps les raccourcis communs du bureau. Disparition de c:\user\public\desktop. Or j'en ai besoin pour me bureaux personnalisé.
Pas de distinction entre masquer les raccourcis communs du menu démarrer et masquer les raccourcis communs du bureau!! Étonnant. Ou alors il existe des clés de registre qui pourrait dissocier les 2.
D'où ma seule option de supprimer manuellement tous les contenus de programmes dans appdata et programdata.
Pas sur d'avoir compris le pb d expansion retardé. Je présume que c'est le fait que des raccourcis peuvent venir s ajouter plus tard. Je vais essayé avec les propositions
9 juin 2023 à 10:50
L'expansion retardée résulte de la lecture d'une boucle FOR: si je la mets en oeuvre pour chercher tous les utilisateurs d'un PC, la valeur prise sera seulement la dernière lue par cette boucle FOR.
Comme ce que je souhaite est que la suppression des programmes s'applique à chaque utilisateur, il faut soit que la variable qui en résulte soit à expansion retardée:
setlocal enabledelayed expansion
où dans le traitement qui suit cette variable est appelée par !var! et non pas %var%
soit que j'appelle à la sortie de cette première boucle une étiquette par CALL :TRAITEMENT
Ma routine de suppression écrite dans l'étiquette :TRAITEMENT sera ainsi appelée (cette fois-ci en tant que variable "habituelle" %var%) à chaque fois que la valeur de la variable (nom de l’utilisateur) change dans la première boucle.
Un script comme suit par exemple va renuméroter tous les fichiers jpg du dossier source à partir de 1000:
CD /D E:\mondossier
SET COUNT=1000
FOR /F "delims=" %%a in ('dir /b E:\mondossier\*.jpg') DO SET FILE=%%~na & CALL :PROCESS
:PROCESS
SET /A "COUNT=COUNT+1"
SET FILE=%FILE:~0,-1%
SET FILE=%FILE%.jpg
REN "%FILE%" "%COUNT%_%FILE%"
9 juin 2023 à 08:41
Bonjour,
Juste quelques remarques en passant.
%Appdata% suffit à représenter C:\Users\%username%\AppData\Roaming.
Le commutateur /S de DEL n'est sans doute pas nécessaire: la commande RMDIR /S détruit tous les dossiers et les fichiers qu'ils contiennent, et DEL ne va donc viser que des fichiers isolés à la racine; il est par contre possible qu'on se fasse planter par le fichier desktop.ini, rajouter /F?
Il ne suffit pas d'exécuter une telle commande seulement à la création d'un nouvel utilisateur: Windows risque fort de nous ressusciter le menu à chaque mise à jour.
Pour rajouter à nos malheurs, une partie du contenu de ce menu (raccourcis de programmes, par exemple Word) se trouve ailleurs: C:\ProgramData\Microsoft\Windows\Start Menu\Programs et cela n'affecte pas les applications (dont l'affichage se dissimule par un paramètre Windows, mais il suffit sans doute dans ces conditions de mettre en place un menu démarrer vierge pour tous les nouveaux utilisateurs via PowerShell et une GPO):
https://www.it-connect.fr/windows-10-deployer-un-menu-demarrer-personnalise/
La commande dir /b C:\Users ramène bien tous les utilisateurs sauf Public (qui n'a pas de menu démarrer et qu'on peut de toute façon exclure par une conditionnelle) mais incluant Default qui en principe ne sert pas et même remarque.
Le problème de l'expansion retardée ou pas va se résoudre de manière conventionnelle sans qu'il soit besoin d'appeler un bat auxiliaire, soit en bouclant la condition FOR de recherche des utilisateurs sur une variable à expansion retardée, soit en appelant par CALL la routine de suppression à la sortie de cette boucle.