- Créer et renommer automatiquement des dossier et fichiers
- Renommer plusieurs fichiers en même temps - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
3 réponses
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
J'ai une question supplémentaire :
Comment je peux faire si je veux utiliser un nom, par exemple "TOTO" au lieu de la date ?
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
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 !
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
21 janv. 2024 à 22:56
Super !
Exactement ce que je voulais !
ça fonctionne super bien
Merci beaucoup !!!
20 janv. 2024 à 23:16
Super !! ça fonctionne super bien.
Merci beaucoup Brucine !
20 janv. 2024 à 23:23
De rien; j'ai oublié d'enlever la pause test parasite dans le fichier, mais tu te débrouilles...