Créer et renommer automatiquement des dossier et fichiers

Seb - 20 janv. 2024 à 13:53
 Seb - 21 janv. 2024 à 22:56

Bonjour,

J'ai cherché sur le net et j'ai trouvé comment créer automatiquement des dossiers.

J'ai aussi trouvé comment renommer automatiquement des fichiers

Mais pas ce que je cherche à faire. Je m'explique

J'aimerais créer automatiquement une liste de dossiers par exemple :

202401001 , 202401002, 202401003 ect.... jusqu'à 200

Et dans chacun de ces dossiers y déposer 2 fichiers Excel (que j'ai précédemment créés) fichier 1 et fichier 2

Puis renommer dans chaque dossier ces fichiers Excel avec le nom du dossier en suffixe.

Ça donnerait pour le 1er répertoire 202401001 :

Fichier 1 202401001

Fichier 2 202401001

Et comme ça 200 dossiers.

Comment je peux faire ça ?

Avec un fichier bat ? Une macro VB ?

Je sais pas encore faire des bat ou macro VB mais j'y suis pas fermé et prêt à m'y mettre si ça me permet d'y arriver !

Merci énormément pour votre aide !


Android / Chrome 120.0.0.0

A voir également:

3 réponses

brucine Messages postés 17894 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 novembre 2024 2 613
20 janv. 2024 à 19:41

Bonjour,

Par exemple comme ça avec un batch .cmd; il doit être enregistré et exécuté dans le même dossier que les fichiers Excel source et il faut remplacer la date de fin par le nombre de dossiers choisis (j'ai mis 4 pour 5, il en faut 199 pour 200).

 

@echo off
FOR /F "usebackq" %%j IN (`PowerShell $date ^= Get-Date^; $date ^= $date^; $date.ToString^('yyyyMM'^)`) DO SET _Date=%%j001
SET /A "_Fin=_Date+4"

MD G:\TEST\%_Date%
REN testa.xlsx testa%_Date%.xlsx
REN testb.xlsx testb%_Date%.xlsx
COPY testa%_Date%.xlsx G:\TEST\%_Date%
COPY testb%_Date%.xlsx G:\TEST\%_Date%
REN testa%_Date%.xlsx testa.xlsx
REN testb%_Date%.xlsx testb.xlsx

:DATE
SET /A "_Date=_Date+1"
MD G:\TEST\%_Date%
REN testa.xlsx testa%_Date%.xlsx
REN testb.xlsx testb%_Date%.xlsx
COPY testa%_Date%.xlsx G:\TEST\%_Date%
COPY testb%_Date%.xlsx G:\TEST\%_Date%
REN testa%_Date%.xlsx testa.xlsx
REN testb%_Date%.xlsx testb.xlsx
IF %_Date% LSS %_Fin% GOTO DATE ELSE GOTO END
pause

:END
2

Super !! ça fonctionne super bien.

Merci beaucoup Brucine !

0
brucine Messages postés 17894 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 novembre 2024 2 613 > Seb
20 janv. 2024 à 23:23

De rien; j'ai oublié d'enlever la pause test parasite dans le fichier, mais tu te débrouilles...

0

J'ai une question supplémentaire :
Comment je peux faire si je veux utiliser un nom, par exemple "TOTO" au lieu de la date ?

0
brucine Messages postés 17894 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 novembre 2024 2 613
21 janv. 2024 à 07:22

La syntaxe PowerShell n'a d'intérêt que de pouvoir créer la date, ici au format yyyyMM (202401) parce que les autres fonctions de date ne peuvent pas créer ce format sans extraire les morceaux pertinents avec des commandes suivantes, je passe les détails.

Je ne vais pas non plus pouvoir numéroter à partir de 001 mais seulement de 1 d'où la pirouette permettant de définir un nombre suffisamment grand pour se terminer par 001 et pouvant faire l'objet d'additions: SET _Date=%%j001.

Si je veux "numéroter" au départ de TOTO001, il faut donc que je commence par 1000 puis que je sélectionne les 3 derniers caractères ~1,3 avec l'inconvénient que cela ne fonctionnera que jusqu'à 999; remettre évidemment à partir de SET /A dans la boucle conditionnelle où on testera la valeur de _number

 

SET _name=TOTO
SET _number=1001
SET _fin=005

SET /A "_number=_number+1"
SET _number=%_number:~1,3%
ECHO %_name%%_number%
IF %_number% LSS %_fin% ECHO continuer la boucle
pause
0

Salut Brunice

Merci beaucoup ! Mais j'ai rien compris :-))

Je dois remplacer quelle partie de code et où ?

Je dois remplacer tout les DATE et plus en avoir dans mon code non ?

Désolé je suis pas du tout programmeur...

Merci énormément pour ton aide !

0
brucine Messages postés 17894 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 novembre 2024 2 613
21 janv. 2024 à 17:44

Je me suis débarrassé de PowerShell qui ne me servait plus au profit de l'incrémentation jusqu'à la valeur de -fin de la partie variable -number reformatée à mon goût de _name_number, comme ça:

 

@echo off
SET _name=TOTO
SET _number=1001
SET _fin=005

SET _number1=%_number:~1,3%
MD G:\TEST\%_name%%_number1%
REN testa.xlsx testa%_name%%_number1%.xlsx
REN testb.xlsx testb%_name%%_number1%.xlsx
COPY testa%_name%%_number1%.xlsx G:\TEST\%_name%%_number1%
COPY testb%_name%%_number1%.xlsx G:\TEST\%_name%%_number1%
REN testa%_name%%_number1%.xlsx testa.xlsx
REN testb%_name%%_number1%.xlsx testb.xlsx

:NUMBER
SET /A "_number=_number+1"
SET _number2=%_number:~1,3%
MD G:\TEST\%_name%%_number2%%
REN testa.xlsx testa%_name%%_number2%.xlsx
REN testb.xlsx testb%_name%%_number2%.xlsx
COPY testa%_name%%_number2%.xlsx G:\TEST\%_name%%_number2%
COPY testb%_name%%_number2%.xlsx G:\TEST\%_name%%_number2%
REN testa%_name%%_number2%.xlsx testa.xlsx
REN testb%_name%%_number2%.xlsx testb.xlsx
IF %_number2% LSS %_fin% GOTO NUMBER ELSE GOTO END

:END
1
Seb > brucine Messages postés 17894 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 novembre 2024
21 janv. 2024 à 22:56

Super ! 
Exactement ce que je voulais !

ça fonctionne super bien

Merci beaucoup !!!

0