| | | | |

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
Exemple de dossier Windows avec folder.jpg défini automatiquement
Exemple de dossier Windows avec folder.jpg défini automatiquement

Utilisation

  1. On place le fichier SetFolderThumbs.bat dans le dossier principal (par exemple Mes Photos).
  2. On double-clique dessus.
  3. Le script affiche une explication, puis on confirme avec une touche.
  4. Chaque sous-dossier obtient automatiquement son folder.jpg.
  5. 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.).

Laisser un commentaire