N'installer un programme que sur certains noms de machines

adgm1 Messages postés 255 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 9 avril 2024 - Modifié le 12 juil. 2023 à 19:30
brucine Messages postés 14344 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 29 avril 2024 - 13 juil. 2023 à 18:10

bonjour

je cherche un moyen de n'installer un programme que si la machine contient le mot "PROF" cela pour éviter de devoir baculer tous les poste profs dans des OU dédiée à ce programme.

J'ai un batch classique qui installe uniquement SI le programme est absent, mais l'idée serait d'ajouter la commande if %computername% contains "PROF" pour n'appliquer la commande que dans le cas ou la machine s'appelle A01-PROF par ex et pas sur celles des étudiants (A01-1, A01-2...)

pour l'instant ca ne fonctionne pas, le script ne se lance pas

if exist "C:\Program Files\Index Education\Pronote 2023\Réseau\Client\Client PRONOTE.exe" goto END else goto INSTALL

:INSTALL
if "%computername%" contains "PROF" goto CONTINUE

:CONTINUE
\\srv-dc1\applications$\pronote\Install_PRNclient_FR_2023.0.1.1_win64.exe -s -f1"\\srv-dc1\applications$\pronote\installPRONOTE_2023.iss"


:END
exit
A voir également:

3 réponses

adgm1 Messages postés 255 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 9 avril 2024 10
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
0
adgm1 Messages postés 255 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 9 avril 2024 10
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
)
0
brucine Messages postés 14344 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 29 avril 2024 1 820
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?

0
brucine Messages postés 14344 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 29 avril 2024 1 820 > brucine Messages postés 14344 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 29 avril 2024
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
0
adgm1 Messages postés 255 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 9 avril 2024 10
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

0
brucine Messages postés 14344 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 29 avril 2024 1 820
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

1