Régénérer les icones de dossier
Bonjour,
Je suis en train de créé un script batch pour changer l'icone de mon fichier par un prédéfini en passant par l'éditeur de registre.
Tout marche bien dans mon code mais à la fin du script l'icone n'est visuellement pas encore présente.
Avez vous une méthode pour pouvoir régénérer directement l'icone du dossier ? sans utiliser TASKKILL
Pour le cache des icones j'ai essayé avec l'astuce : ie4uinit.exe -ClearIconCache mais ce n'est pas mieux
Merci à vous
Show Or Hide Desktop Icons And Show Or Hide Seconds In System Clock
Citation:
Envoyé par
cremi
Mais il y a quand même le taskkill utilisé, ce n'est pas possible sans ça ?
Ou alors de récupérer les chemins des dossiers qui sont ouverts avant le taskkill et les rouvrir quand on relance explorer ?
Oui, il y a une possibilité pour ça et voici un autre exemple qui utilise cette méthode pour récupérer les chemins des dossiers, mais Attention, ce n'est pas le même script pour changer les icons.
Code:
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
| @echo off
Title Show Or Hide Desktop Icons And Show Or Hide Seconds In System Clock
Color 9E & Mode 82,12 & SetLocal EnableDelayedExpansion
Call:CreateShortcut
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Automatically check & and start the batch file with admin rights
(Net session >nul 2>&1)||(PowerShell start """%userprofile%\Desktop\%~n0.lnk""" -verb RunAs & Exit /B)
::--------------------------------------------------------------------------
Set "Key=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
::--------------------------------------------------------------------------
:GetInfo
@REM Get Opened Folders with PowerShell code in a batch file
Set PSCommand="@((New-Object -com shell.application).Windows()).Document.Folder | ForEach { $_.Self.Path }"
REM Populate the array with existent and opened folders
SetLocal EnableDelayedExpansion
Set /a Count=0
for /f "delims=" %%a in ('Powershell -C %PSCommand%') do (
Set /a Count+=1
Set "Folder[!Count!]=%%a"
)
::===========================================================================
:menuLOOP
::===========================================================================
echo(
echo(
echo( ***************************** Menu ******************************
echo(
@for /f "tokens=2* delims=_ " %%A in ('"findstr /b /c:":menu_" "%~f0""') do (
echo( %%A %%B)
echo(
echo( *****************************************************************
echo( &Set /p Selection=Make a Selection or hit ENTER to quit: || Goto :EOF
echo( & Call:menu_[%Selection%]
GOTO:menuLOOP
::===========================================================================
::---------------------------------------------------------------------------------------------------
:menu_[1] Show Seconds In SystemClock
reg Add "%Key%" /V ShowSecondsInSystemClock /T REG_DWORD /D 1 /F 1>NUL
Call:Restart_Explorer
@rem Restore all closed folders
@for /L %%i in (1,1,%Count%) do Start /MAX Explorer "!Folder[%%i]!"
Exit /B
::---------------------------------------------------------------------------------------------------
:menu_[2] Hide Seconds In SystemClock
reg Add "%Key%" /V ShowSecondsInSystemClock /T REG_DWORD /D 0 /F 1>NUL
Call:Restart_Explorer
@rem Restore all closed folders
@for /L %%i in (1,1,%Count%) do Start /MAX Explorer "!Folder[%%i]!"
Exit /B
::---------------------------------------------------------------------------------------------------
:menu_[3] Hide Desktop Icons
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoDesktop /t REG_DWORD /d 1 /f 2>nul
Call:Restart_Explorer
@rem Restore all closed folders
@for /L %%i in (1,1,%Count%) do Start /MAX Explorer "!Folder[%%i]!"
Exit /B
::---------------------------------------------------------------------------------------------------
:menu_[4] Show Desktop Icons
reg delete HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDesktop /f 2>nul
Call:Restart_Explorer
@rem Restore all closed folders
@for /L %%i in (1,1,%Count%) do Start /MAX Explorer "!Folder[%%i]!"
Exit /B
::---------------------------------------------------------------------------------------------------
:Restart_Explorer
Powershell -C "gps explorer | spps"
Exit /B
::---------------------------------------------------------------------------------------------------
:CreateShortcut
Powershell ^
"$s=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\%~n0.lnk'); ^
$s.TargetPath='%~f0'; ^
$s.WorkingDirectory='%~dp0'; ^
$s.IconLocation='colorcpl.exe,0'; ^
$s.HotKey='CTRL+ALT+I'; ^
$s.Save()"
Exit /B
::--------------------------------------------------------------------------------------------------- |