Correction/aide Batch de tri de fichier
RésoluLapinCretin12 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais avoir un coup de main svp. Je souhaite ranger des milliers de fichiers qui sont tous dans un dossier avec un batch. Je souhaiterais que le batch créer un dossier avec le nom du fichier jusqu'à la première lettre si il n'existe pas il le créer et y colle le fichier si il existe il y colle le fichier testé.
exemple:
qwe004.jpg --> le copie dans un dossier "qwe"
qwe002.mp4 -> le copie dans le dossier "qwe"
abc7743.jpg -> le copie dans le dossier "abc"
abc.bat > le copie dans le dossier "abc"
J'ai fais 2 bat, 2 qui fais le travail décris mais sur les 3 premières lettre du nom du fichier. Et un autre bat qui extrait dans le nom du fichier jusqu'au premier chiffre. Ces 2 script fonctionnent, je vous les met ici:
@echo off
setlocal enabledelayedexpansion
set "dossier_source=U:\Desktop\dossiertest"
cd "%dossier_source%"
for %%F in (*) do (
set "fichier=%%~nxF"
set "premieres_lettres=!fichier:~0,3!"
if not exist "!premieres_lettres!" (
mkdir "!premieres_lettres!"
)
move "%%F" "!premieres_lettres!\!fichier!"
)
echo Terminé !
pause
@echo off
setlocal enabledelayedexpansion
set "filename=aa_a345.txt"
set "foldername="
for /l %%i in (0, 1, 100) do (
rem Get the current character
set "char=!filename:~%%i,1!"
if "!char!" equ "" goto :endloop
if "!char!" geq "0" if "!char!" leq "9" goto :endloop
set "foldername=!foldername!!char!"
)
:endloop
echo Folder name: !foldername!
pause
J'ai essayer de les fusionner pour faire précisément ce que je souhaite dans ce script, mais dés la seconde boucle for il dis qu'il y a une erreur de syntaxe alors que je ne comprend pas pourquoi.
@echo off
setlocal enabledelayedexpansion
set "dossier_source=U:\Desktop\dossiertest"
cd "%dossier_source%"
rem boucle qui parcours les fichiers dans le "dossier_source"
for %%F in (*) do (
set "fichier=%%~nxF"
set "foldername="
rem boucle qui parcours les caractères du fichier testé actuellement(ca bug dés ici)
for /l %%i in (0, 1, 100) do (
set "char=!fichier:~%%i,1!"
if "!char!" equ "" goto :endloop
if "!char!" geq "0" if "!char!" leq "9" goto :endloop
set "foldername=!foldername!!char!"
)
:endloop
if not exist "!foldername!" (
mkdir "!foldername!"
)
move "%%F" "!foldername!\!fichier!"
)
echo Terminé !
pause
quelqu'un aurait une idée plz? j'ai tenté de debuggé avec des echo et des pause et je ne sais pas pourquoi dés le second for ca bug. Merci de m'avoir lu :p
Windows / Chrome 125.0.0.0
- Correction/aide Batch de tri de fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier batch - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
Bonjour,
Je n'ai pas essayé mais comme ceci ça devrait le faire :
@echo off setlocal enabledelayedexpansion set "dossier_source=U:\Desktop\dossiertest" cd "%dossier_source%" rem boucle qui parcours les fichiers dans le "dossier_source" for %%G in (*.*) do ( for /f "tokens=1 delims=0123456789" %%A in ("%%~nG") do ( if not exist "%%~A" (mkdir "%%~A") move "%%~fG" "%%~A\%%~nxG" ) ) echo Terminé pause