Créer et renommer automatiquement des dossier et fichiers
Seb -
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
- Créer et renommer automatiquement des dossier et fichiers
- Renommer des fichiers en masse - Guide
- Créer un lien pour partager des photos - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Dossier appdata - Guide
3 réponses
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
J'ai une question supplémentaire :
Comment je peux faire si je veux utiliser un nom, par exemple "TOTO" au lieu de la date ?
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
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 !
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
Super !! ça fonctionne super bien.
Merci beaucoup Brucine !
De rien; j'ai oublié d'enlever la pause test parasite dans le fichier, mais tu te débrouilles...