Script Batch pour définir l’image folder.jpg dans les dossiers Windows
|
Script Batch pour définir automatiquement l’image folder.jpg dans nos dossiers Windows
Introduction
Quand on organise ses fichiers sur Windows, c’est pratique de voir directement une vignette représentative de chaque dossier.
Windows utilise un fichier spécial nommé folder.jpg
comme image miniature.
Plutôt que de renommer nos images à la main, voici un script Batch (.bat) simple et efficace qui automatise ce travail.
Fonctionnement
- On place le fichier .bat dans le dossier principal.
- Le script parcourt tous les sous-dossiers directs.
- Dans chaque sous-dossier, il prend la première image (ordre alphabétique : jpg, jpeg, png, bmp).
- Il copie cette image sous le nom
folder.jpg
dans le même dossier. - Si un fichier
folder.jpg
existe déjà, il sera :- remplacé en mode normal,
- ignoré si on lance le script avec l’option /nooverwrite.
⚠️ Important : Le script fait une copie, il ne supprime pas l’image originale.
Le script complet
On copie ce code dans Bloc-notes, on l’enregistre avec le nom par exemple SetFolderThumbs.bat
, puis on le place dans le dossier principal.
@echo off
setlocal EnableExtensions
title SetFolderThumbs - level 1 (copy, no accents)
REM === Root = folder where the .bat is located ===
set "ROOT=%~dp0"
REM === Option: /nooverwrite to keep existing folder.jpg ===
set "OVERWRITE=1"
if /I "%~1"=="/nooverwrite" set "OVERWRITE=0"
REM === Timestamp & log (ASCII only) ===
set "ts=%date%_%time%"
set "ts=%ts:/=-%"
set "ts=%ts::=%"
set "ts=%ts: =0%"
set "ts=%ts:,=%"
set "ts=%ts:.=%"
set "LOG=%ROOT%SetFolderThumbs_%ts%.log"
set /a folders=0, done=0, alreadyok=0, noimg=0, skipped=0, errors=0
echo ===============================================================
echo SCRIPT : SetFolderThumbs (COPY version)
echo.
echo What it does in the current folder:
echo - Scan all DIRECT subfolders
echo - Find the first image (jpg, jpeg, png, bmp)
echo - Copy this image as "folder.jpg" inside the subfolder
echo.
echo Rules:
echo - If "folder.jpg" already exists:
echo * In normal mode -> it will be replaced
echo * In /nooverwrite mode -> it will be skipped
echo - The original image is NOT deleted
echo ===============================================================
echo.
pause
call :log "==============================================="
call :log "SetFolderThumbs - start"
call :log "Root : %ROOT%"
if "%OVERWRITE%"=="1" (call :log "Mode : OVERWRITE existing folder.jpg") else (call :log "Mode : NO OVERWRITE if folder.jpg exists")
call :log "Log : %LOG%"
call :log "==============================================="
REM === Process first-level subfolders only ===
for /d %%D in ("%ROOT%*") do call :handle "%%D"
call :log ""
call :log "==================== SUMMARY ===================="
call :log "Subfolders scanned : %folders%"
call :log "folder.jpg created : %done%"
call :log "Already OK : %alreadyok%"
call :log "No image : %noimg%"
call :log "Existing (skipped) : %skipped%"
call :log "Errors : %errors%"
call :log "================================================="
echo(
echo(Details in log: "%LOG%"
echo(
pause
endlocal
exit /b
:handle
REM %~1 = subfolder
set /a folders+=1
set "SUB=%~1"
set "FIRST="
pushd "%SUB%" >nul 2>&1
if errorlevel 1 (
set /a errors+=1
call :log "[ERR ] cannot enter: %SUB%"
goto :eof
)
REM Take first image (alphabetical order)
for /f "delims=" %%F in ('
dir /b /a-d /on *.jpg *.jpeg *.png *.bmp 2^>nul
') do (
set "FIRST=%%F"
goto :gotfirst
)
:gotfirst
if not defined FIRST (
set /a noimg+=1
call :log "[----] ""%SUB%"" -> no image found"
popd >nul
goto :eof
)
REM Already folder.jpg ?
if /I "%FIRST%"=="folder.jpg" (
set /a alreadyok+=1
call :log "[OK ] ""%SUB%"" -> folder.jpg already set"
popd >nul
goto :eof
)
REM folder.jpg exists and overwrite is disabled ?
if exist "folder.jpg" if "%OVERWRITE%"=="0" (
set /a skipped+=1
call :log "[SKIP] ""%SUB%"" -> folder.jpg exists (nooverwrite)"
popd >nul
goto :eof
)
REM Copy instead of move
copy /y "%FIRST%" "folder.jpg" >nul 2>&1
if errorlevel 1 (
set /a errors+=1
call :log "[ERR ] ""%SUB%"" -> failed to copy ""%FIRST%"" to folder.jpg"
) else (
set /a done+=1
call :log "[OK ] ""%SUB%"" -> ""%FIRST%"" copied to folder.jpg"
)
popd >nul
goto :eof
:log
set "L=%~1"
echo(%L%
>>"%LOG%" echo(%L%
exit /b

Utilisation
- On place le fichier
SetFolderThumbs.bat
dans le dossier principal (par exempleMes Photos
). - On double-clique dessus.
- Le script affiche une explication, puis on confirme avec une touche.
- Chaque sous-dossier obtient automatiquement son folder.jpg.
- Un fichier log est créé pour garder un résumé.
Avantages
- Simple à utiliser, aucun logiciel à installer.
- Compatible avec Windows 7, 8, 10 et 11.
- L’image originale n’est jamais supprimée.
- Possibilité d’ignorer les
folder.jpg
déjà présents avec l’option/nooverwrite
.
Conclusion
Avec ce script Batch, on gagne du temps et on organise ses dossiers de manière plus visuelle.
Chaque sous-dossier a automatiquement sa propre vignette personnalisée, sans manipulation manuelle.
Essayez-le et adaptez-le selon vos besoins (ajout d’extensions, traitement récursif, etc.).