[BATCH] Boucle selon nom de fichier SRC ET nom de dossier DST
Résolu
Informadream
Messages postés
465
Date d'inscription
Statut
Membre
Dernière intervention
-
Informadream Messages postés 465 Date d'inscription Statut Membre Dernière intervention -
Informadream Messages postés 465 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je n'y connais pas grand chose en programmation, néanmoins j'ai un besoin plutôt simple auquel c'est probablement très facile de répondre avec un brin de connaissance :
Je cherche à faire un batch pour automatiser le classement de PDF dans leurs dossiers respectfis.
Les fichiers se nomment "001000 xxxx" (xxx étant une autre suite de chiffres)
Par exemple :
- 001000 xxxx.pdf
- 002000 xxxx.pdf
- 003000 xxxx.pdf
- 052000 xxxx.pdf
- 350000 xxxx.pdf
Les dossiers se nomment juste avec la première série de chiffre, donc ça va de 000000 à 350000, en passant par 025000, 250000, etc.
Les fichiers PDF se retrouvent tous au même endroit, et j'ai besoin de les dispatcher dans leurs dossiers respectifs.
Voici mon script, si on peut appeler ça comme ça...
cd C:\Users\xxx\Downloads\SRC
move "001*" "C:\Users\xxx\Downloads\DST\001000"
move "002*" "C:\Users\xxx\Downloads\DST\002000"
move "003*" "C:\Users\xxx\Downloads\DST\003000"
Problème, il y a + de 300 dossiers (donc de 000000 à 300000), et ça peut aller au-delà.
Comment faire une boucle dans ce cas présent ?
L'idée, si j'ai bien compris, ça serait de remplacer les 001*, 002* par des variables qui s'incrémenteraient à chaque passage de la boucle,
Et remplacer aussi les noms de dossiers de la même manière (001000, 002000, 003000, etc.)
Merci par avance pour votre aide :)
Je n'y connais pas grand chose en programmation, néanmoins j'ai un besoin plutôt simple auquel c'est probablement très facile de répondre avec un brin de connaissance :
Je cherche à faire un batch pour automatiser le classement de PDF dans leurs dossiers respectfis.
Les fichiers se nomment "001000 xxxx" (xxx étant une autre suite de chiffres)
Par exemple :
- 001000 xxxx.pdf
- 002000 xxxx.pdf
- 003000 xxxx.pdf
- 052000 xxxx.pdf
- 350000 xxxx.pdf
Les dossiers se nomment juste avec la première série de chiffre, donc ça va de 000000 à 350000, en passant par 025000, 250000, etc.
Les fichiers PDF se retrouvent tous au même endroit, et j'ai besoin de les dispatcher dans leurs dossiers respectifs.
Voici mon script, si on peut appeler ça comme ça...
cd C:\Users\xxx\Downloads\SRC
move "001*" "C:\Users\xxx\Downloads\DST\001000"
move "002*" "C:\Users\xxx\Downloads\DST\002000"
move "003*" "C:\Users\xxx\Downloads\DST\003000"
Problème, il y a + de 300 dossiers (donc de 000000 à 300000), et ça peut aller au-delà.
Comment faire une boucle dans ce cas présent ?
L'idée, si j'ai bien compris, ça serait de remplacer les 001*, 002* par des variables qui s'incrémenteraient à chaque passage de la boucle,
Et remplacer aussi les noms de dossiers de la même manière (001000, 002000, 003000, etc.)
Merci par avance pour votre aide :)
A voir également:
- [BATCH] Boucle selon nom de fichier SRC ET nom de dossier DST
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier batch - Guide
- Dossier appdata - Guide
4 réponses
hello
on extrait les 6 premiers car. du nom, ce qui donne la destination
enlever le echo si c'est ok
on extrait les 6 premiers car. du nom, ce qui donne la destination
enlever le echo si c'est ok
@echo off
setlocal enabledelayedexpansion
set dir=C:\Users\xxx\Downloads\DST\
for %%a in (*.pdf) do (
set dest=%%a
set dest=!dest:~0,6!
echo move "%%a" "%dir%!dest!"
)
J'ai essayé d'avancer un peu tout seul, ma "boucle" donnerait ça :
cd C:\Users\xxx\Downloads\SRC
for %%X in (1,1,300) do
for %%i in ("*%X%*.pdf") do move "*%X%*.pdf" "C:\Users\xxx\Downloads\DST\*%X%*"
Malheureusement ça ne marche pas du tout, même pas un message d'erreur, la fenêtre s'ouvre et se ferme...
cd C:\Users\xxx\Downloads\SRC
for %%X in (1,1,300) do
for %%i in ("*%X%*.pdf") do move "*%X%*.pdf" "C:\Users\xxx\Downloads\DST\*%X%*"
Malheureusement ça ne marche pas du tout, même pas un message d'erreur, la fenêtre s'ouvre et se ferme...
Merci beaucoup pour ta réponse, ça avance :)
Problème, le répertoire de DST ne porte pas exactement le nom du fichier, par exemple :
Fichiers :
- 001047 00029 ABC.pdf
- 002404 00093 ABC.pdf
- 003292 00125 ABC.pdf
- 004907 00197 ABC.pdf
- 188001 09619 ABC.pdf
(la mention "ABC" du nom du fichier est toujours présente)
Dossiers :
- 001000
- 002000
- 003000
- 004000
- 188000
--> Selon le nombre dans la première partie du nom du fichier (ex. 001047 pour le premier), on le classe dans le dossier correspondant, en raisonnant par "milliers".
Du coup, il faudrait que la boucle parcoure les fichiers, détermine à quel "milliers" appartiennent les 6 premiers chiffres, et le classe dans le dossier correspondant.
Si je ne suis pas clair n'hésite pas.
Problème, le répertoire de DST ne porte pas exactement le nom du fichier, par exemple :
Fichiers :
- 001047 00029 ABC.pdf
- 002404 00093 ABC.pdf
- 003292 00125 ABC.pdf
- 004907 00197 ABC.pdf
- 188001 09619 ABC.pdf
(la mention "ABC" du nom du fichier est toujours présente)
Dossiers :
- 001000
- 002000
- 003000
- 004000
- 188000
--> Selon le nombre dans la première partie du nom du fichier (ex. 001047 pour le premier), on le classe dans le dossier correspondant, en raisonnant par "milliers".
Du coup, il faudrait que la boucle parcoure les fichiers, détermine à quel "milliers" appartiennent les 6 premiers chiffres, et le classe dans le dossier correspondant.
Si je ne suis pas clair n'hésite pas.