Fichier batch

Signaler
-
Messages postés
12791
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
31 octobre 2020
-
Bonjour,

Je souhaiterais créer un fichier batch avec des fonctionnalités particulières et je voulais savoir si c'était possible.

J'ai un dossier dans lequel j'ai des sous dossiers, je souhaiterais répartir certains fichiers (cette fonctionnalité je la connais !) dans d'autres dossiers et idéalement qu'ils se mettent dans un dossier du jour.

Exemple: Dossier 1 (origine) : production du jour, sous dossier : cire, titane, résine etc...
Dossier 2 (destination) : Cire, titane etc... avec la création automatique d'un dossier du jour dans chacun de ces dossiers (cire, titane...)

En parallèle je souhaiterais savoir si il est possible de copier certains fichiers automatiquement, le problème c'est que ces fichiers sont distinguables par la présence de certains caractère dans leur nom (ex : TOTO-Dumont-x2.stl) et non pas par type de fichier.

La fonction copy c'est bon je connais, la fonction pour déplacer aussi.
Mon problème reste la possibilité (ou non) de conditionner la copy à la présence de termes particuliers dans leur nom ainsi que la possibilité de créer automatique un dossier à la date du jour dans le dossier de destination.

J'espère être à peu près clair !!

Merci et bon dimanche.

Configuration: Windows / Firefox 81.0

7 réponses

Messages postés
12791
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
31 octobre 2020
3 723
Bonjour,

Pour la copie de fichiers ce n'est pas très clair, quels fichiers doivent être copiés dans quels dossiers ?

Messages postés
5
Date d'inscription
dimanche 25 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020

Voila le type de fichier source que j'aurais


Et ce que je voudrais avec la génération automatique du dossier à la date du jour
Messages postés
12791
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
31 octobre 2020
3 723
Bonjour,

Voilà un premier brouillon :

@echo off
setlocal enableextensions enabledelayedexpansion

set origine=....................................\production
set destination=................................\fabrication
set jour=%date:~6,4%-%date:~3,2%-%date:~0,2%

cd /d %destination% || exit /b 1

for /d %%A in (*) do if not exist "%%A\%jour%" (mkdir "%%A\%jour%")

for /r "%origine%" %%A in (*x2*.*) do (

set "dossier_du_jour=%%~dpA"
if not exist "!dossier_du_jour:%origine%=%destination%!\%jour%" (mkdir "!dossier_du_jour:%origine%=%destination%!\%jour%")

copy "%%~A" "!dossier_du_jour:%origine%=%destination%!\%jour%"

)

pause


Avant de lancer ce script, tu dois indiquer les bons chemins dans les variables origine et destination.
Messages postés
5
Date d'inscription
dimanche 25 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020

Top merci,
Et la possibilité de copier les fichiers contenant des termes particuliers c'est faisable ou non ?
Messages postés
12791
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
31 octobre 2020
3 723
Regarde ma boucle FOR /R : (*x2*.*)
Messages postés
5
Date d'inscription
dimanche 25 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020

Ne connaissant pas trop les possibilités de ce type de fichier je n'aurais pas pigé.

Merci énormément je teste ça rapidement
Messages postés
5
Date d'inscription
dimanche 25 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020

cela fonctionne pour la copie des fichiers contenant "x2" mais je voudrais que par la suite la commande déplace tous les fichiers avec l'extension .stl soient déplacés vers le dossier destination et que par la suite tous mes sous dossier "source" soient vidés.
Faisable ?
Messages postés
12791
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
31 octobre 2020
3 723
@echo off
setlocal enableextensions enabledelayedexpansion

set origine=....................................\production
set destination=................................\fabrication
set jour=%date:~6,4%-%date:~3,2%-%date:~0,2%

cd /d %destination% || exit /b 1

for /r "%origine%" %%A in (*.stl) do (

set "dossier_du_jour=%%~dpA"
if not exist "!dossier_du_jour:%origine%=%destination%!\%jour%" (mkdir "!dossier_du_jour:%origine%=%destination%!\%jour%")

move "%%~A" "!dossier_du_jour:%origine%=%destination%!\%jour%"

)

pause
Messages postés
5
Date d'inscription
dimanche 25 octobre 2020
Statut
Membre
Dernière intervention
31 octobre 2020

Merci barnabe0057
Le transfert fonctionne parfaitement mais la boucle "x2" n'y est plus dans ton dernier post...J'ai essayé de l'ajouter sans succès...

J'en profite pour une petite demande, est il possible d'avoir la date format jj/mm/aaaa ?
Messages postés
12791
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
31 octobre 2020
3 723
Voilà :

@echo off
setlocal enableextensions enabledelayedexpansion

set origine=....................................\production
set destination=................................\fabrication
set jour=%date:~0,2%-%date:~3,2%-%date:~6,4%

cd /d %destination% || exit /b 1

for /r "%origine%" %%A in (*x2*.* *.stl) do (

set "dossier_du_jour=%%~dpA"
if not exist "!dossier_du_jour:%origine%=%destination%!\%jour%" (mkdir "!dossier_du_jour:%origine%=%destination%!\%jour%")

move "%%~A" "!dossier_du_jour:%origine%=%destination%!\%jour%"

)

pause