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 :

Comment changer l'icône d'un dossier avec une commande batch ?


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club Avatar de Nemes1s
    Homme Profil pro
    autre
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut Comment changer l'icône d'un dossier avec une commande batch ?
    Bonjour,

    Actuellement je m'amuse à automatiser des téléchargements de fichiers pour les installer silencieusement par la suite:

    Code : 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
    20
    21
    22
    23
    24
    echo off Title Téléchargement des logiciels pour Windows 
    cls
    @echo *** Création des répertoires ***
    MD C:\Users\Nemesis\Desktop\Bureautique;C:\Users\Nemesis\Desktop\Media;C:\Users\Nemesis\Desktop\Internet\Navigateur\Module
    @echo.
    @echo -----------------------------
    @echo  Téléchargement des Logiciels
    @echo -----------------------------
    @echo.
    @echo *** Software Media ***
    Start "VLC" /min /w DownloadVLC.bat
    @echo.
    @echo *** Software Navigateur ***
    Start "Opera" /min /w DownloadOpera.bat
    Start "Firefox" /min /w DownloadFirefox.bat
    Start "Plugin" /min /w DownloadModule.bat
    Start "Adobe Flash" /min /w DownloadAdobeFlash.bat
    @echo.
    @echo *** Software Bureautique ***
    Start "Java" /min /w DownloadJava.bat
    Start "Unchecky" /min /w DownloadUnchecky.bat
    Start "WINRAR" /min /w DownloadWINRAR.bat
    pause
    Ensuite j'aimerai simplement ajouter les ligne de code pour pouvoir changer les icônes des dossiers Bureautique Media et Navigateur mais je ne trouve pas la commande sur google sauf des réponses qui n'ont rien à voire ou alors des Desktop.ini (qui est peut-être la solution) etc

    Quelqu'un pourrais m'aider ?

    Bien sûr toute modification du script est la bienvenue, il est basique.


    info si ça intéresse: je me sers de Bitsadmin dans les fichier .bat

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Il semble que ce soit bien le "desktop.ini" qui définisse l’icône.

    Voici quelques propositions

    Code batch : 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
    20
    21
    22
    23
    24
    25
    @echo off
    cls
    title Téléchargement des logiciels pour Windows 
     
    echo *** Création des répertoires ***
    MD "C:\Users\Nemesis\Desktop\Bureautique" "C:\Users\Nemesis\Desktop\Media" "C:\Users\Nemesis\Desktop\Internet\Navigateur\Module"
    echo.
    echo -----------------------------
    echo  Téléchargement des Logiciels
    echo -----------------------------
    echo.
    echo *** Software Media ***
    Start "VLC" /min /w DownloadVLC.bat
    echo.
    echo *** Software Navigateur ***
    Start "Opera" /min /w DownloadOpera.bat
    Start "Firefox" /min /w DownloadFirefox.bat
    Start "Plugin" /min /w DownloadModule.bat
    Start "Adobe Flash" /min /w DownloadAdobeFlash.bat
    echo.
    echo *** Software Bureautique ***
    Start "Java" /min /w DownloadJava.bat
    Start "Unchecky" /min /w DownloadUnchecky.bat
    Start "WINRAR" /min /w DownloadWINRAR.bat
    pause

    Le "Desktop.ini" de "C:\Users\%USERNAME%\Pictures"
    [.ShellClassInfo]
    LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
    InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
    IconResource=%SystemRoot%\system32\imageres.dll,-113
    IconFile=%SystemRoot%\system32\shell32.dll
    IconIndex=-236

  3. #3
    Futur Membre du Club Avatar de Nemes1s
    Homme Profil pro
    autre
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    En effet j'me suis penché aussi la dessus. On peut créer un Disktop.ini dans chaque dossier et appeler les Icônes
    soit par le chemin d'une image, soit carrément dans un .dll ( ou un .exe) avec le n° de l'icône correspondant dans le .dll ( ou .exe ).

    Je fais des test et je mettrais ça ici si ça marche.
    Merci.

  4. #4
    Futur Membre du Club Avatar de Nemes1s
    Homme Profil pro
    autre
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Alors je créé le fichier ini avec tout les ATTRIB correspondant au même que si on le faisait via la souris mais ça ne fonctionne pas. Le fichier est bien créé mais ça ne change rien, comme s'il manquait la validation ou je ne sais pas quoi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off 
    cls
    Title Téléchargement des logiciels pour windows
    
    echo *** Création des répertoires ***
    MD "C:\Users\Nemesis\Desktop\Bureautique" "C:\Users\Nemesis\Desktop\Media" "C:\Users\Nemesis\Desktop\Internet\Navigateur\Module"
    echo [.ShellClassInfo] >"C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    echo IconResource=C:\Windows\System32\AdapterTroubleshooter.exe,0 >>"C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    echo [ViewState] >>"C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    echo Mode= >>"C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    echo Vid= >>"C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    echo FolderType=Generic >>"C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    ATTRIB +H +S +A "C:\Users\Nemesis\Desktop\Bureautique\Desktop.ini"
    pause

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Si tu redémarre ton pc ça devrai fonctionner, a tester dans un premier temps.

    Si ça fonctionne, c'est que ça vient du cache des icônes Windows, il faut le réinitialiser.
    https://www.google.fr/?gws_rd=ssl#q=...cons+windows&*

    Tu peux essayer cette commande :
    ie4uinit.exe -ClearIconCache

  6. #6
    Futur Membre du Club Avatar de Nemes1s
    Homme Profil pro
    autre
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    J'ai essayé de plusieurs façon pour vider le cache et ça ne fonctionne pas. L'icône reste inchangé. Je sais pas par où chercher une solution. Je vais me renseigner plus sur Desktop.ini.

    Merci de m'aider en tout cas même si c'est pas forcément si intéressant ça me permet d'en apprendre un peu plus ^^.

  7. #7
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    le desktop.ini fonctionne uniquement avec les dossiers qui sont en attribut SYSTEM, donc il te faut préalablement changer cette attribut pour ton dossier.

    j'ai trouvé ce script powershell qui peu te mettre sur la bonne voie :



    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <# 
    .SYNOPSIS 
    This function sets a folder icon on specified folder. 
    .DESCRIPTION 
    This function sets a folder icon on specified folder. Needs the path to the icon file to be used and the path to the folder the icon is to be applied to. This function will create two files in the destination path, both set as Hidden files. DESKTOP.INI and FOLDER.ICO 
    .EXAMPLE 
    Set-FolderIcon -Icon "C:\Users\Mark\Downloads\Radvisual-Holographic-Folder.ico" -Path "C:\Users\Mark" 
    Changes the default folder icon to the custom one I donwloaded from Google Images. 
    .EXAMPLE 
    Set-FolderIcon -Icon "C:\Users\Mark\Downloads\wii_folder.ico" -Path "\\FAMILY\Media\Wii" 
    Changes the default folder icon to custom one for a UNC Path. 
    .EXAMPLE 
    Set-FolderIcon -Icon "C:\Users\Mark\Downloads\Radvisual-Holographic-Folder.ico" -Path "C:\Test" -Recurse 
    Changes the default folder icon to custom one for all folders in specified folder and that folder itself. 
    .NOTES 
    Created by Mark Ince on May 4th, 2014. Contact me at mrince@outlook.com if you have any questions. 
    #> 
    function Set-FolderIcon 
    { 
        [CmdletBinding()] 
        param 
        (     
            [Parameter(Mandatory=$True, 
            Position=0)] 
            [string[]]$Icon, 
            [Parameter(Mandatory=$True, 
            Position=1)] 
            [string]$Path, 
            [Parameter(Mandatory=$False)] 
            [switch] 
            $Recurse     
        ) 
        BEGIN 
        { 
            $originallocale = $PWD 
            #Creating content of the DESKTOP.INI file. 
            $ini = '[.ShellClassInfo] 
                    IconFile=folder.ico 
                    IconIndex=0 
                    ConfirmFileOp=0' 
            Set-Location $Path 
            Set-Location ..     
            Get-ChildItem | Where-Object {$_.FullName -eq "$Path"} | ForEach {$_.Attributes = 'Directory, System'} 
        }     
        PROCESS 
        { 
            $ini | Out-File $Path\DESKTOP.INI 
            If ($Recurse -eq $True) 
            { 
                Copy-Item -Path $Icon -Destination $Path\FOLDER.ICO     
                $recursepath = Get-ChildItem $Path -r | Where-Object {$_.Attributes -match "Directory"} 
                ForEach ($folder in $recursepath) 
                { 
                    Set-FolderIcon -Icon $Icon -Path $folder.FullName 
                } 
             
            } 
            else 
            { 
                Copy-Item -Path $Icon -Destination $Path\FOLDER.ICO 
            }     
        }     
        END 
        { 
            $inifile = Get-Item $Path\DESKTOP.INI 
            $inifile.Attributes = 'Hidden' 
            $icofile = Get-Item $Path\FOLDER.ICO 
            $icofile.Attributes = 'Hidden' 
            Set-Location $originallocale         
        } 
    } 
    <# 
     
    #> 
    function Remove-SetIcon 
    { 
        [CmdletBinding()] 
        param 
        (     
            [Parameter(Mandatory=$True, 
            Position=0)] 
            [string]$Path 
        ) 
        BEGIN 
        { 
            $originallocale = $PWD 
            $iconfiles = Get-ChildItem $Path -Recurse -Force | Where-Object {$_.Name -like "FOLDER.ICO"} 
            $iconfiles = $iconfiles.FullName 
            $inifiles = Get-ChildItem $Path -Recurse -Force | where-Object {$_.Name -like "DESKTOP.INI"} 
            $inifiles = $inifiles.FullName 
        } 
        PROCESS 
        { 
            Remove-Item $iconfiles -Force 
            Remove-Item $inifiles -Force 
            Set-Location $Path 
            Set-Location .. 
            Get-ChildItem | Where-Object {$_.FullName -eq "$Path"} | ForEach {$_.Attributes = 'Directory'}     
        } 
        END 
        { 
            Set-Location $originallocale 
        } 
    }

  8. #8
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut


    Voici une piste que j'ai trouvé pour vous en batch et il faut comme il a dit sachadee de bien choisir l'attribut S= Système
    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
    @echo off
    set "fld=%userprofile%\Desktop\HackooTest"
    md "%fld%" >nul 2>&1
     
    (
        echo [.ShellClassInfo]
        echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
        echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
        echo IconResource=%SystemRoot%\system32\imageres.dll,-113
        echo IconFile=%SystemRoot%\system32\shell32.dll
        echo IconIndex=-236 
    )> "%fld%\Desktop.ini"
     
    Attrib +h +s +a "%fld%\Desktop.ini"
    Attrib +r "%fld%"
    Rem Pour rafraîchier l'explorateur windows
    Taskkill /im explorer.exe /f >nul & start explorer
    ou bien
    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
    @echo off
    set "fld=%userprofile%\Desktop\HackooTest"
    set "ico=%~dp0icon.ico"
    md "%fld%\icons" >nul 2>&1
    attrib -s "%ico%"
    if exist "%ico%" ( copy "%ico%" "%fld%\icons\icon.ico" /y >nul 2>&1)
    if exist "%fld%\desktop.ini" ( attrib -h -s -a "%fld%\desktop.ini" >nul 2>&1 )
     
    (
        echo [.ShellClassInfo]
        echo IconResource=icons\icon.ico,0
    )> "%fld%\Desktop.ini"
     
    attrib +h +s +a "%fld%\Desktop.ini"
    attrib +r "%fld%"
    attrib +h "%fld%\icons"
    taskkill /im explorer.exe /f >nul & start explorer
    Ce bout de code est inspiré par ici


  9. #9
    Futur Membre du Club Avatar de Nemes1s
    Homme Profil pro
    autre
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Je viens de tester les code Bat mais ça ne fonctionne pas et je n'ai pas envie de me mettre au language PowerShell pour le moment. J'ai encore beaucoup à apprendre du dos ^^.
    J'ai testé d'autres commandes pour le ini mais rien à faire ça veut pas. J'pensais que ça aurait fonctionné en redémarrant l'explorer aussi mais non.
    Tant pis j'vais laisser tomber les icônes pour le moment. C'est juste une question d'esthétique. J'vais continuer mon script sur les installations silencieuses, je reviendrais sur les icônes plus tard mais encore merci à vous.

  10. #10
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut

    Voici un exemple dans la pièce-jointe avec icône que vous pouvez le tester chez vous
    Ce batch, crée un dossier dans votre bureau nommé Hackoo avec changement d'icône bien sûr !
    Testé sur un Windows 10 (32 bits).
    J'ai ajouté un petit bout de code au début, pour que le script s'exécute en tant qu’administrateur
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    @echo off
    Title %~nx0 by Hackoo 2017
    mode con cols=80 lines=3 & Color 9E
    if _%1_==_Main_  goto :Main
    :getadmin
        echo(
        echo               "%~nx0" : Running Admin Shell
        set vbs=%temp%\getadmin.vbs
    (
        echo Set UAC = CreateObject^("Shell.Application"^)
        echo UAC.ShellExecute "%~s0", "Main %~sdp0 %*", "", "runas", 1
    )> "%vbs%"
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
    goto :eof
    ::**********************************************************************************
    :Main
    set "fld=%userprofile%\Desktop\Hackoo"
    set "ico=%~dp0icon.ico"
    md "%fld%\icons" >nul 2>&1
    echo(
    echo   Please wait a while... we execute the commands to change icon to the folder
    If exist "%ico%" (
        Attrib -s "%ico%"
    ) else (
        cls & mode con cols=85 lines=3 & color 0C
        echo( 
        echo  The file "icon.ico" should be in the same folder as "%~nx0"
        Timeout /T 5 /nobreak>nul & exit
    )
    if exist "%ico%" ( copy "%ico%" "%fld%\icons\icon.ico" /y >nul 2>&1 )
    if exist "%fld%\desktop.ini" ( attrib -h -s -a "%fld%\desktop.ini" >nul 2>&1 )
     
    (
        echo [.ShellClassInfo]
        echo IconResource=icons\icon.ico,0
    )> "%fld%\Desktop.ini"
     
    attrib +h +s +a "%fld%\Desktop.ini"
    attrib +r "%fld%"
    attrib +h "%fld%\icons"
    Rem To refresh the explorer by killing and restart it
    taskkill /im explorer.exe /f >nul & start explorer
     
    If "%ErrorLevel%" EQU "0" (
        cls & echo( & color 9E
        echo                     The commands are executed successfully !
        Timeout /T 4 /nobreak>nul
        Explorer.exe /e,/root,"%fld%"
    ) else (
        cls & echo( & color 0C
        echo         There was an error occured while this program is running !
        Timeout /T 4 /nobreak>nul
    )
    Hackoo_Change_Icon_Folder.rar

  11. #11
    Invité de passage
    Homme Profil pro
    chef de produit
    Inscrit en
    Septembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : chef de produit

    Informations forums :
    Inscription : Septembre 2018
    Messages : 1
    Par défaut
    Bonjour,

    J'ai une question de débutant qui se rapproche de la discussion : je souhaiterais, sous windows 7, copier l'ergonomie smartphone : l'idée serait d'avoir dans l'image d'un dossier une icone de notification (un chiffre dans un cercle rouge) qui indique le nombre de fichiers contenus dans le dossier, et donc qui se met à jour à chaque modification.

    Nom : pending.JPG
Affichages : 3661
Taille : 9,2 Ko

    N'étant pas du tout développeur, je n'ai aucune idée de la faisabilité, ou du code à utiliser.

    J'ai quelques bribes de brouillon :
    - une macro excel qui compte les fichiers dans un dossier
    - le B-A BA pour créer un ficher .bat.



    Des idées ?

    Merci !

Discussions similaires

  1. Affichage dossier avec une case à cocher
    Par corwin44 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 22/01/2009, 14h34
  2. Réponses: 1
    Dernier message: 18/11/2008, 21h42
  3. [AJAX] Changer la valeur d'un input avec une valeur récupérée en php
    Par leroidje dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/08/2008, 15h12
  4. Réponses: 3
    Dernier message: 05/10/2007, 13h19
  5. Comment changer la valeur d'un attribut avec une stylesheet?
    Par BugsBunny dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/06/2006, 18h18

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