Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script batch (.bat) inefficace

alors que manuellement c'est ok

Sujet résolu
    12 mars 2019 à 0:06:53

    Bonjour.

    Dans "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer", j'ai ajouté la clé "UseDefaultTile" de valeur DWORD 32 bits fixée à "1".

    De cette façon, tous les comptes utilisateurs ont pour image utilisateur "user.bmp", située dans "C:\ProgramData\Microsoft\User Account Pictures" (Windows Vista, 7 et 8) ou "C:\ProgramData\Microsoft\Default Account Pictures" (Windows 8.1) ;

    et il suffit de remplacer celle-ci par une autre image 24bits "user.bmp" de taille 128x128px pour la changer sur le LoginScreen, et de redémarrer l'Explorateur Windows pour changer aussi celle qui est dans le menu "Démarrer".

    Si je remplace cette image manuellement ça fonctionne parfaitement, mais si j'utilise le script batch suivant (D:\Personnalisations\Themes\Theme_2\Theme_2.bat) l'image ne change pas :

    @echo off
    xcopy "D:\Personnalisations\Themes\Theme_2\User Account Pictures" "C:\ProgramData\Microsoft\User Account Pictures" /e /i /h /k /y
    taskkill /f /im explorer.exe
    start explorer.exe
    goto :eof

    Si je fais le script suivant, ça "vide" l'image (sans la supprimer), j’obtiens un cadre vide (contenu transparent) sur le LoginScreen, et l'image utilisateur (et son cadre) qui est dans menu "Démarrer" est complètement supprimée :

    @echo off
    attrib -r -s -h "C:\ProgramData\Microsoft\User Account Pictures\user.bmp"
    del /f /q "C:\ProgramData\Microsoft\User Account Pictures\user.bmp"
    copy "D:\Personnalisations\Themes\Theme_2\User Account Pictures\user.bmp" "C:\ProgramData\Microsoft\User Account Pictures\"
    taskkill /f /im explorer.exe
    start explorer.exe
    goto :eof

    J'utilise Windows 7 Édition Familiale Premium et Windows 10 Famille, mais pour cette action là c'est uniquement Windows 7 que je vise (en x32 et x64).

    Sauriez-vous comment faire en utilisant un .bat (ou un fichier appelé par celui-ci) pour copier "D:\Personnalisations\Themes\Theme_2\User Account Pictures\user.bmp" et la coller dans "C:\ProgramData\Microsoft\User Account Pictures" en remplaçant l'image existante, s'il-vous-plaît ?

    Edit : Est-ce qu'un modérateur pourrait déplacer ce sujet dans "Autres langages (VBA, Ruby,...)", SVP ?

    -
    Edité par TheScar.fr 8 avril 2019 à 16:53:58

    • Partager sur Facebook
    • Partager sur Twitter

    Windows 7 Professionnel SP1 x64

    .

      27 mars 2019 à 18:54:57

      Rebonjour.

      Si j’exécute ces deux scripts "En tant qu'administrateur" ils fonctionnent ;

      mais lorsque je redémarre l'Explorateur Windows, l'icône de ma suite anti-virus "Bitdefender" ne réapparaît pas dans la zone de notification...

      N'y-a-t'il pas un truc à ajouter à :

      xcopy "D:\Personnalisations\Themes\Test\User Account Pictures" "C:\ProgramData\Microsoft\User Account Pictures" /e /i /h /k /y

      ou à :

      copy "D:\Personnalisations\Themes\Test\User Account Pictures\user.bmp" "C:\ProgramData\Microsoft\User Account Pictures\"

      pour que la commande soit exécutée en tant qu'administrateur, s'il-vous-plaît ?

      P.S : Mon compte utilisateur est un compte administrateur protégé par mot de passe, même si je suis l'unique utilisateur de mes ordinateurs.

      Edit : Pour info, voilà les scripts que j'utilise pour changer de thème :

      "Changer de thème.bat" ("Changer de thème.lnk" est exécuté à l'ouverture de session, en fenêtre réduite car je n'aime pas qu'une fenêtre s'affiche tout de suite quand j'ouvre une session ; j'attend que le minimum requis du système soit chargé avant d'agrandir cette fenêtre et de l'utiliser) :

      @echo off
      echo Voulez-vous changer de th確e ?
      echo.
      echo Liste des th確e :
      echo.
      echo 1 : NomDuTheme_1
      echo 2 : NomDuTheme_2
      echo 3 : NomDuTheme_3
      echo.
      set /p currentTheme=<"C:\Users\User_Name\Documents\Theme\CurrentTheme.txt"
      echo Th確e actuel : %currentTheme%
      echo.
      echo Choix possibles :
      echo.
      echo [0] : Choix alBtoire du th確e.
      echo [1-3] : Choix du th確e correspondant (sauf th確e actuel).
      echo [Autre] : Garder le th確e actuel.
      echo.
      set /p choix=Quel est votre choix ?
      ::"Random Theme.lnk" au lieu de "Random Theme.bat" pour pouvoir attribuer une icône, car j'utilise aussi "Random Theme.lnk" en dehors de l'ouverture de session.
      if %choix%==0 start "Random Theme" "D:\Personnalisations\Themes\System\Random Theme.lnk"
      if %choix%==1 Set changerDeTheme=NomDuTheme_1
      if %choix%==2 Set changerDeTheme=NomDuTheme_2
      if %choix%==3 Set changerDeTheme=NomDuTheme_3
      if %changerDeTheme%==%currentTheme% goto :eof
      if %choix% GEQ 1 if %choix% LEQ 3 start "Change Theme" "D:\Personnalisations\Themes\System\Change Theme.bat" %changerDeTheme%
      goto :eof

      "Random Theme.bat" :

      @echo off
      Set /p currentTheme=<"C:\Users\User_Name\Documents\Theme\CurrentTheme.txt"
      goto :SetRandomTheme
      
      :SetRandomTheme
      Set /a randomTheme=%random% %%3
      Set /a randomTheme=%randomTheme%+1
      if %randomTheme%==1 Set theme=NomDuTheme_1
      if %randomTheme%==2 Set theme=NomDuTheme_2
      if %randomTheme%==3 Set theme=NomDuTheme_3
      goto :ChangeTheme
      
      :ChangeTheme
      if %currentTheme%==%theme% goto :SetRandomTheme
      start "Change Theme" "D:\Personnalisations\Themes\System\Change Theme.bat" %theme%
      goto :eof

      "Change Theme.bat" (ce fichier est également utilisable en créant un raccourci "Change Theme.lnk" disposant de l'argument NomDuTheme_x ; exemple de cible : "D:\Personnalisations\Themes\System\Change Theme.bat" NomDuTheme_1) :

      @echo off
      Set processus="DSHost.exe"
      for /f "tokens=1" %%i in ('tasklist /NH /FI "imagename eq %processus%"') do Set ff=%%i
      if /i "%ff%"==%processus% (taskkill /f /im DSHost.exe)
      Set processus="ObjectDock.exe"
      for /f "tokens=1" %%i in ('tasklist /NH /FI "imagename eq %processus%"') do Set ff=%%i
      if /i "%ff%"==%processus% (taskkill /f /im ObjectDock.exe)
      Set /p currentObjectDock=<"C:\Users\User_Name\Documents\Theme\ObjectDock.txt"
      Set /p objectDock=<"D:\Personnalisations\Themes\%1\Theme\ObjectDock.txt"
      for /f "tokens=4-7 delims=[.] " %%i in ('ver') do (if %%i==Version (set v=%%j.%%k) else (set v=%%i.%%j))
      ::Je ne vise que Windows 10 et Windows 7 ; pour d'autres versions de Windows, il faut ajouter d'autres comparaisons à la ligne suivante.
      if %v%==10.0 (Set systemVersion=Windows10) else (Set systemVersion=Windows7)
      if exist "%ProgramFiles(x86)%" (Set systemBit=x64) else (Set systemBit=x32)
      Set operatingSystem=%systemVersion%_%systemBit%
      if %systemVersion%==Windows10 Set /p currentStart10=<"C:\Users\User_Name\Documents\Theme\Start10.txt"
      if %systemVersion%==Windows10 Set /p start10=<"D:\Personnalisations\Themes\%1\Theme\Start10.txt"
      Set /p currentWindowBlinds=<"C:\Users\User_Name\Documents\Theme\WindowBlinds.txt"
      Set /p windowBlinds=<"D:\Personnalisations\Themes\%1\Theme\WindowBlinds.txt"
      if %systemVersion%==Windows10 Set /p accountPicture=<"D:\Personnalisations\Themes\%1\AccountPictures.txt"
      xcopy "D:\Personnalisations\Themes\%1\Theme" "C:\Users\User_Name\Documents\Theme" /e /i /h /k /y
      xcopy "D:\Personnalisations\Themes\%1\TranscodedWallpaper" "C:\Users\User_Name\AppData\Local\Stardock" /e /i /h /k /y
      xcopy "D:\Personnalisations\Themes\%1\TranscodedWallpaper" "C:\Users\User_Name\AppData\Roaming\Microsoft\Windows\Themes" /e /i /h /k /y
      xcopy "D:\Personnalisations\Themes\%1\Windows DreamScene" "C:\Users\User_Name\AppData\Roaming\Microsoft\Windows DreamScene" /e /i /h /k /y
      if %systemBit%==x64 xcopy "D:\Personnalisations\Themes\%1\TaskBar" "C:\Users\User_Name\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" /e /i /h /k /y
      if not "%currentObjectDock%"=="%objectDock%" xcopy "D:\Personnalisations\Themes\System\ObjectDock\%objectDock%\%operatingSystem%\ObjectDockPlus" "C:\Users\User_Name\AppData\Local\Stardock\ObjectDockPlus" /e /i /h /k /y
      if %systemVersion%==Windows10 (if not "%currentStart10%"=="%start10%" xcopy "D:\Personnalisations\Themes\System\Start10\%start10%\Theme" "C:\Users\User_Name\Documents\Theme" /e /i /h /k /y) else (if not "%currentWindowBlinds%"=="%windowBlinds%" explorer "C:\Users\Public\Documents\Stardock\WindowBlinds\SkinStudio8\WBA\%windowBlinds%.wba")
      explorer "C:\Users\User_Name\AppData\Local\Microsoft\Windows\Themes\%1.theme"
      timeout /t 5
      Set processus="SystemSettings.exe"
      for /f "tokens=1" %%i in ('tasklist /NH /FI "imagename eq %processus%"') do Set ff=%%i
      if /i "%ff%"==%processus% (taskkill /f /im SystemSettings.exe)
      if %systemVersion%==Windows7 explorer "D:\Personnalisations\Themes\System\Close Personnalisation.vbs"
      if exist "C:\Users\User_Name\AppData\Local\Microsoft\Windows\Themes\Custom.theme" attrib -r -s -h "C:\Users\User_Name\AppData\Local\Microsoft\Windows\Themes\Custom.theme"
      if exist "C:\Users\User_Name\AppData\Local\Microsoft\Windows\Themes\Custom.theme" del /f /q "C:\Users\User_Name\AppData\Local\Microsoft\Windows\Themes\Custom.theme"
      if %systemBit%==x64 if exist "C:\Users\Public\Documents\Stardock\Dreams\%1.DREAM" explorer "C:\Users\Public\Documents\Stardock\Dreams\%1.DREAM"
      if %systemVersion%==Windows10 (start "Account Picture" "C:\Users\User_Name\AppData\Roaming\Microsoft\Windows\AccountPictures\%accountPicture%.accountpicture-ms") else (start "User Account Pictures" "D:\Personnalisations\Themes\System\User Account Pictures.lnk" %1)
      if not "%currentObjectDock%"=="%objectDock%" xcopy "D:\Personnalisations\Themes\System\Logon\%objectDock%\%operatingSystem%" "C:\Users\User_Name\Documents\Theme" /e /i /h /k /y
      ::"%systemVersion%LogonBackgroundChanger.lnk" au lieu de "W10 Logon BG Changer.exe" et "Win7LogonBackgroundChanger.exe" pour simplifier le script et aussi pour pouvoir personnaliser l'icône, car j'utilise aussi "%systemVersion%LogonBackgroundChanger.lnk" en dehors de mes scripts.
      if not "%currentObjectDock%"=="%objectDock%" start "%systemVersion% Logon Background Changer" "D:\Programmes\LogonBackgroundChanger\%systemVersion%\%systemVersion%LogonBackgroundChanger.lnk"
      if not "%currentObjectDock%"=="%objectDock%" (echo Lancement de "%systemVersion% Logon Background Changer"...)
      pause
      taskkill /f /im explorer.exe
      start explorer.exe
      if %systemBit%==x64 (start "Object Dock" "C:\Program Files (x86)\Stardock\ObjectDock\ObjectDock.exe") else (start "Object Dock" "C:\Program Files\Stardock\ObjectDock\ObjectDock.exe")
      exit

      "Close Personnalisation.vbs" :

      Set WshShell = WScript.CreateObject("WScript.Shell")
      WScript.Sleep 1000
      WshShell.SendKeys "%{F4}"
      Set WshShell = Nothing

      "User Account Pictures.bat" ("User Account Pictures.lnk" est exécuté en tant qu'administrateur) :

      @echo off
      xcopy "D:\Personnalisations\Themes\%1\User Account Pictures" "C:\ProgramData\Microsoft\User Account Pictures" /e /i /h /k /y
      goto :eof

      -
      Edité par TheScar.fr 7 juin 2019 à 15:23:41

      • Partager sur Facebook
      • Partager sur Twitter

      Windows 7 Professionnel SP1 x64

      .

        29 mars 2019 à 14:51:37

        Rebonjour.

        J'ai essayé ça :

        runas /user:Computer_Name\User_Name "xcopy \"D:\Personnalisations\Themes\Test\User Account Pictures\" \"C:\ProgramData\Microsoft\User Account Pictures\" /e /i /h /k /y"

        ça :

        runas /user:Computer_Name\User_Name "%windir%\System32\xcopy.exe \"D:\Personnalisations\Themes\Test\User Account Pictures\" \"C:\ProgramData\Microsoft\User Account Pictures\" /e /i /h /k /y"

        ça :

        runas /user:Computer_Name\User_Name "C:\Windows\System32\xcopy.exe \"D:\Personnalisations\Themes\Test\User Account Pictures\" \"C:\ProgramData\Microsoft\User Account Pictures\" /e /i /h /k /y"

        et ça :

        runas /user:Computer_Name\User_Name "start \"User Account Pictures\" \"D:\Personnalisations\Themes\System\User Account Pictures.bat\""

        aucune de ces commandes n'a fonctionné...

        Alors j'ai fait ça :

        start "User Account Pictures" "D:\Personnalisations\Themes\System\User Account Pictures.lnk"

        "User Account Pictures.bat" ("User Account Pictures.lnk" est exécuté en tant qu'administrateur) :

        @echo off
        xcopy "D:\Personnalisations\Themes\Test\User Account Pictures" "C:\ProgramData\Microsoft\User Account Pictures" /e /i /h /k /y
        goto :eof

        et ça fonctionne.

        Je passe le sujet en résolu.

        -
        Edité par TheScar.fr 17 avril 2019 à 18:41:24

        • Partager sur Facebook
        • Partager sur Twitter

        Windows 7 Professionnel SP1 x64

        .

          8 avril 2019 à 16:58:22

          Rebonjour.

          Pour info, j'ai un peu amélioré mes scripts de changement de thème -> voir 2ème message

          -
          Edité par TheScar.fr 8 avril 2019 à 16:58:34

          • Partager sur Facebook
          • Partager sur Twitter

          Windows 7 Professionnel SP1 x64

          .

          Script batch (.bat) inefficace

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown