Bonjour,
Je suis débutant dans les scripts batch et votre aide me serait très utile.
J'ai actuellement dans l'entreprise où je travaille une tâche répétitive à effectuer tout les matins.
Je m'explique :
Je reçois une archive compressée contenant plusieurs fichiers .pdf que j'extrais dans un dossier.
Ces fichiers extraits ont tous un nom identique : Toto100.pdf, Toto200.pdf, etc...
Ce que je souhaite c'est créer un script batch me permettant de copier les fichiers dans 2 dossiers différents, ceci en fonction de leur nom.
Les fichiers comportant un nom entre 100 et 200 devraient être copiés dans le sous-dossier Toto1 et le reste dans le dossier Toto2.
J'ai actuellement déjà fait quelques recherches et ai trouvé un script me permettant de supprimer les espaces dans les noms de fichiers. J'ai également pu me renseigner sur la fonction "Xcopy" qui me permettrait de copier les fichiers. Cependant je ne trouve rien sur comment définir les plages de nombres sur lesquelles il devra copier dans tel ou tel dossier, et comment appliquer ces plages de nombres à la fonction xcopy sur une partie du nom du fichier.
J'espère avoir été explicite et reste à disposition pour toutes questions.
EDIT
Résultat :
Code Final pour remplir le fichier contenant la liste à comparer :
Code Final pour copier les fichiers en fonction d'une partie de leur nom :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 For /L %%N IN (1000,1,2999) Do echo %%N >> listeET.txt For /L %%N IN (7700,1,8500) Do echo %%N >> listeET.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 setlocal enabledelayedexpansion @echo off for /r "c:\toto" %%i in (*.pdf) do ( set chemin_complet=%%~fi set nom_extention=%%~nxi for /f "tokens=1,2,3,4 delims=_" %%i in ("!nom_extention!") do ( set p1=%%i set p2=%%j set p3=%%k set p4=%%l set p5=!p1:~3! set etat=0 for /f "tokens=*" %%i in ('type "C:\toto\listeET.txt" ^| find "!p5!"') do set etat=1 if !p5! LSS 1000 set etat=0 if "!etat!"=="1" move "!chemin_complet!" "c:\toto\ETE" if "!etat!"=="0" move "!chemin_complet!" "c:\toto\ETF" set etat=0 ) )
Partager