N'installer un programme que sur certains noms de machines
Fermébrucine Messages postés 18839 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 31 janvier 2025 - 13 juil. 2023 à 18:10
- N'installer un programme que sur certains noms de machines
- Installer chromecast sur tv - Guide
- Installer windows 10 sans compte microsoft - Guide
- Installer ccleaner - Télécharger - Nettoyage
- Installer windows 11 sur pc non compatible - Accueil - Windows
- Programme demarrage windows 10 - Guide
3 réponses
12 juil. 2023 à 21:19
je crois avoir un début de solution mais il reste qq bug . Quand le PC est bien un pc etudiant il va quand meme lancer une partie du script, il n'installe pas mais copie le fichier .xcfg alors que je demande d'aller directement vers la section :END
Autre chose j'aimerais trouver un moyen pour avoir 2 conditions pour identifier un poste prof, soit si il contient PROF soit si il contient SDP.
setlocal enabledelayedexpansion
set nameSearch=PROF
set checkComputerName=!computername:%nameSearch%=!
if "%checkComputerName%" NEQ "%computername%" goto INSTALL else goto END
:INSTALL
if not exist "%programfiles%\Index Education\Pronote 2023\Réseau\Client\Client PRONOTE.exe" (
\\srv-dc1\applications$\pronote\Install_PRNclient_FR_2023.0.1.1_win64.exe -s -f1"\\srv-dc1\applications$\pronote\installPRONOTE_2023.iss"
timeout /t 2
taskkill /F /IM "Client PRONOTE.exe"
xcopy "\\srv-dc1\applications$\pronote\ConfigClientsHttp.xcfg" "C:\ProgramData\IndexEducation\Commun\" /y
)
:END
echo le pc n est pas un poste PROF
pause
12 juil. 2023 à 23:38
j'ai compris mon pb c'était à cause de l'accent de "Réseau", il empeche la reconnaissance du repertoire d'installation. le é est détecté comme un ├® ?!! J'ai donc changé pour un autre emplacement. Me reste encore à attribuer plusieurs valeurs pour identifier un poste cible. Y a t'il moyen de mettre PROF ou SDP comme valeur dans NameSearch?
Voici le script qui marche pour les postes qui sont nommé avec PROF uniquement
@echo off
setlocal enabledelayedexpansion
set nameSearch=PROF
set checkComputerName=!computername:%nameSearch%=!
if "%checkComputerName%" NEQ "%computername%" goto INSTALL else (
echo le pc n est pas un poste PROF
pause
)
:INSTALL
if not exist "C:\Program Files (x86)\InstallShield Installation Information\{02871376-45F6-4642-9D84-C7681ABE361F}\setup.exe" (
\\srv-dc1\applications$\pronote\Install_PRNclient_FR_2023.0.1.1_win64.exe -s -f1"\\srv-dc1\applications$\pronote\installPRONOTE_2023.iss"
timeout /t 2
taskkill /F /IM "Client PRONOTE.exe"
xcopy "\\srv-dc1\applications$\pronote\ConfigClientsHttp.xcfg" "C:\ProgramData\IndexEducation\Commun\" /y
) else (
echo PRONOTE est deja installe
pause
)
13 juil. 2023 à 08:59
Bonjour,
Quelques remarques d'ordre général parce que je ne suis pas réveillé et qu'on finit d'autant par s'y perdre dans tes scripts successifs qu'ils sont "mal formatés" (la prochaine fois, sélectionne la langue "Basic").
Rien ne s'oppose à ce qu'un chemin contienne un accent (ou un espace) du moment que le chemin est spécifié entre guillemets.
C'est simplement l'affichage qui débloque (et partant une condition qu'on devrait appliquer au mot "réseau", ce qui n'est pas le cas).
Sur le plan purement cosmétique, mettre en tête de gondole une sentence du type:
CHCP n>NUL
où n vaut 1252 ou 65001
Si tu appliques ton script localement à chaque PC (sans tous les rechercher à partir d'un PC particulier), l'expansion de variables ou la variable tout court ont d'autant moins de raison d'être que cette variable ne change jamais (par le biais d'une boucle FOR).
On obtient localement beaucoup plus facilement le résultat souhaité par quelque chose du style:
@echo off echo.%computername%|findstr /C:"PROF" >nul 2>&1 && goto INSTALL || goto PASPROF :INSTALL echo toto rem blabla goto END :PASPROF echo le PC n'est pas un poste PROF goto END :END pause
A cet égard, ton premier script est foireux parce qu'il va se rendre à CONTINUE que la condition soit vraie ou non (et la condition contains n'est pas prévue dans IF).
Je te laisse maître de ton script d'installation à proprement parler (indépendamment des conditions précédentes) que tu as je suppose testé comme fonctionnel en dehors du reste, je ne peux pas le faire.
Ta dernière question n'est pas claire, doit-on tester si le nom du PC doit contenir en même temps PROF et SDP ou bien alternativement l'un ou l'autre et quel comportement adopter dans ces différents cas de figure?
13 juil. 2023 à 09:18
Si la condition est OU, ajouter une deuxième recherche:
@echo off echo.%computername%|findstr /C:"PROF" >nul 2>&1 && goto INSTALL || goto SDP :SDP echo.%computername%|findstr /C:"SDP" >nul 2>&1 && goto INSTALL || goto PASPROF :PASPROF echo le PC n'est pas un poste PROF goto END :INSTALL echo toto rem blabla :END pause
Modifié le 13 juil. 2023 à 14:49
oui la condition est bien OU. Cest à dire si le poste contient PROF ou SDP alors c'est un poste prof et donc il faut appliquer l'installation. Dans tous les autres cas cest PASPROF.
donc cest ok la deuxieme proposition marche nikel merci
echo.%computername%|findstr /C:"PROF" >nul 2>&1 && goto INSTALL || goto SDP :SDP echo.%computername%|findstr /C:"SDP" >nul 2>&1 && goto INSTALL || goto PASPROF
Pour le pb de l'accent je ne comprend pas bien ce qu'il faut faire, dans le script il est transcrit comme ça : R├®seau. Et du coup cest bien ça qui induit en erreur puisque le fichier .exe est bien present dans le repertoire et pourtant le script passe outre. Cela est du à quoi ce symbole bizarre?
> pb réglé il fallait bien mettre chcp 65001 >NUL. j'avais du mal à capter le concept, merci
13 juil. 2023 à 18:10
Les commandes ou sources de données ne gèrent pas l'alphabet latin et/ou les caractères étendus UTF8.
Comble du vice, il arrive même qu'on soit obligé d'en changer selon la commande utilisée dans un script mettant en jeu des caractères spéciaux, un exemple ici:
:SIZEMAILDEBUT CHCP 1252 >NUL XXCOPY %orig%\Mail C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Mailorigdebut.txt FOR /F "tokens=1,2 delims==" %%g IN ('FINDSTR "Total" %~dp0_temp\_Mailorigdebut.txt') DO SET sizemailorigdebut=%%h CHCP 65001 >NUL ECHO ^[104mTaille Mails:[0m echo Mails Source = %sizemailorigdebut% octets
Selon le cas, je vais me faire planter par XXCOPY par le séparateur de milliers du nombre d'octets ou l'existence de caractères spéciaux dans le titre dont ECHO en couleurs.
Mais dans le cas général, CHCP 65001 est passe-partout, qu'on redirige comme d'habitude vers NUL parce que je n'ai pas besoin que la console m'affiche le changement de page de code.
https://www.gladir.com/OS/WINDOWS/chcp.htm