IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Script pour mettre une compatibilité [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut Script pour mettre une compatibilité
    Bonjour à tous!

    Je suis débutante en batch et j'ai un petit script à faire qui me pose des problèmes.
    J'essaye de dire à un logiciel que quand il est sur un ordinateur ayant comme OS Windows 10, et bien il doit s'exécuter comme si il était sous Windows 8.
    De base je voulais faire ça : chercher l'OS de l'ordinateur (j'ai réussi à faire) puis changer la compatibilité (là ça bloque).
    Je vous passe les premières lignes du script qui ne sont pas importantes.

    :ver_2010
    set __COMPAT_LAYER= [!]Windows 8 monapplication.exe

    Mais cela ne fonctionne pas du tout. J'ai l'impression de vouloir faire une purée avec un petit pois.
    Si quelqu'un a des idées, ou des pistes pour moi, je suis preneuse!

    Merci à touuuuuuuuuuuus
    Chloé

  2. #2
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Salut,

    Un truc du genre:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off & cls
     
    for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
    if "%version%" == "10.0" (
            reg Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "CHEMIN\monapplication.EXE" /d "WIN8RTM"
    )
    pause
    exit

    Redis moi si ça te va et si tu as besoin d'explications.

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut
    Merci de ta réponse, c'est super cool

    Vu que je n'aime pas trop tester des trucs que je ne comprends pas, il se trouve que il y a une ligne que je n'ai pas comprise : for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
    J'ai compris que tu bouclais (c'est biiiiiien), mais après j'avoue que cela reste un peu obscur pour moi. Est-ce que tu pourrais un peu plus m'expliquer cette ligne s'il te plaît ?

    Merci beaucoup !
    Chloé

    EDIT : J'ai essayé et ça marche super bien !!!!!
    Mais si jamais tu repasses par là pour m'expliquer la ligne incomprise c'est cool

  4. #4
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut
    Citation Envoyé par ChloéolhC Voir le message
    Merci de ta réponse, c'est super cool

    Vu que je n'aime pas trop tester des trucs que je ne comprends pas, il se trouve que il y a une ligne que je n'ai pas comprise : for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
    J'ai compris que tu bouclais (c'est biiiiiien), mais après j'avoue que cela reste un peu obscur pour moi. Est-ce que tu pourrais un peu plus m'expliquer cette ligne s'il te plaît ?

    Merci beaucoup !
    Chloé

    EDIT : J'ai essayé et ça marche super bien !!!!!
    Mais si jamais tu repasses par là pour m'expliquer la ligne incomprise c'est cool


    Bon en fait j'ai compris la ligne en fouinant et par déduction.
    Je vais faire appel encore à quelqu'un qui pourrait m'aider... Comment je peux dire que si le mode de compatibilité est déjà en windows 8, alors de ne rien faire du tout?
    Je pensais faire un truc du style if "%version%" == "10.0" || logiciel n'est pas encore en mode windows 8

    Merci !
    Chloé

  5. #5
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Re,

    Essaye ceci:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    @echo off&cls
    setlocal EnableDelayedExpansion
     
    set "REGKeyToSearch=HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags"
    set "App=monapplication.EXE"
    set "CompatibilityVersion=WIN8RTM"
    reg query "%REGKeyToSearch%" /s /f "%App%" > nul
    if %errorlevel% EQU 0 (
        for /f "tokens=3" %%a in ('reg query "%REGKeyToSearch%" /s /f "%App%" ^|Find "%App%"') do (
            if not "%%a" EQU "%CompatibilityVersion%" (
                for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
                if "%version%" == "10.0" (
                   reg Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "CHEMIN\monapplication.EXE" /d "%CompatibilityVersion%"
                )
            )
        )
    )
    pause
    exit

    Petites explications rapides:
    - "reg query" -> on interroge la base de registre, ici on va demander si "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags" a quelque chose du nom de "monapplication.EXE".
    - " > nul" est là pour ne pas afficher du texte inutile pour notre version finale.
    - "if %errorlevel% EQU 0" On vérifie qu'il a trouvé la clé, sinon on ne fait rien
    - "for /f "tokens=3" %%a ..." On récupère la valeur de la clé ("WIN8RTM" si la clé existe déjà)
    - "if not "%%a" EQU "%CompatibilityVersion%"" Tu as normalement compris cette ligne

    Résumé:
    Le code regarde si la clé existe déjà et si on a définit le logiciel en mode compatibilité pour Windows 8.
    Si c'est le cas on ne fait rien (comme si on avait pas lancé le script), sinon on ajoute l'appli en compatibilité Windows 8.

    En espérant avoir été suffisamment concis.

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut
    Yooooo

    Ok c'est génial merci beaucoup! Et merci surtout pour tes explications

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2015, 08h21
  2. [XL-2013] Script pour mettre des données sur une même ligne
    Par initial32 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/12/2014, 13h45
  3. script c pour mettre une variable ds un fichier
    Par majong dans le forum Linux
    Réponses: 3
    Dernier message: 13/03/2008, 15h57
  4. [langage] cherche script pour formater une chaine
    Par MASSAKA dans le forum Langage
    Réponses: 7
    Dernier message: 12/11/2003, 12h18
  5. Réponses: 2
    Dernier message: 08/08/2003, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo