Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Substitution de variable qui ne se fait pas...

5 réponses
Avatar
Michel HERRSCHER
Bonjour à tous,

Dans un batch, je cherche à nommer certains fichiers avec la date du jour.
Pour cela je dois utiliser un fichier . bat qui va faire le renommage.

J'ai un souci de subtitution de variable dans le fichier de commandes ci
après.

La variable madate est bien positionnée , mais rename et type remplacent ma
variable par une chaine vide...

Où me suis je trompé?

Merci de vos lumières.

rem file bat de test---------------------
set MADATE = %date%
set MADATE
Pause pour verifier la valeur de la variable
echo aaa > bcklog.txt
type bcklog.txt
pause pour verifier le contenu du file
rename bcklog.txt %MADATE%.txt
pause pour verifier le rename
type %MADATE%.txt
pause pour verifier le contenu du file rename
-----------------------------

Michel HERRSCHER

5 réponses

Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonjour !

Sur ma machine (sous Vista), ça marche bien.
Le problème pourrait être lié à un espace intempestif dans la variable
%date% (selon la version de windows).

@+

Michel Claveau
Avatar
Eric Giffard
"Michel HERRSCHER" a écrit dans le message de news:
fkvoju$vbd$
Bonjour à tous,

Dans un batch, je cherche à nommer certains fichiers avec la date du jour.
Pour cela je dois utiliser un fichier . bat qui va faire le renommage.

J'ai un souci de subtitution de variable dans le fichier de commandes ci
après.

La variable madate est bien positionnée , mais rename et type remplacent
ma
variable par une chaine vide...

Où me suis je trompé?

Merci de vos lumières.

rem file bat de test---------------------
set MADATE = %date%
set MADATE
Pause pour verifier la valeur de la variable
echo aaa > bcklog.txt
type bcklog.txt
pause pour verifier le contenu du file
rename bcklog.txt %MADATE%.txt
pause pour verifier le rename
type %MADATE%.txt
pause pour verifier le contenu du file rename
-----------------------------

Michel HERRSCHER




Bonjour
Le problème vient du format de la date qui est du genre "Ven. 27/12/2007"
Hors les "/" ne sont pas pris dans les noms de fichiers
Essaye plutôt

@echo off
rem extraction de 2 caractères a partir du 5eme
set j=%date:~5,2%
rem extraction de 2 caractères a partir du 8eme
set m=%date:~8,2%
rem extraction des derniers caractères a partir du 11eme
set a=%date:~11%
echo %j%
echo %m%
echo %a%
set madate=%j%%m%%a%
echo %madate%

Tu l'arrange pour renommer ton fichier
ren bcklog.txt %MADATE%.txt

A bientôt
Eric Giffard
MCSE Windows XP/2000/2003
MCT Windows 2000/2003/XP/Vista

Enlever les ~ pour une réponse
eric.giffard@~laposte.net (perso)
eric.g@~nextmedia.fr (boulot)

Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonjour !

Aaarrff. Très juste.

J'avais oublié que le format de date (pour les batchs) dépend de ce qui
est défini dans les options régionales.
Ce qui explique que ça fonctionne chez moi, et pas forcément sur
d'autres ordis.

La solution est, bien sûr, de s'affranchir des séparateurs.
(Perso, j'utilise : %date:~-2%%date:~3,2%%date:~,2%)

@-salutations

Michel Claveau
Avatar
Michel HERRSCHER
Dans un message MCI (ex do ré Mi chel la si do) [MVP] disait :

Bonjour !

Aaarrff. Très juste.

J'avais oublié que le format de date (pour les batchs) dépend de ce qui
est défini dans les options régionales.
Ce qui explique que ça fonctionne chez moi, et pas forcément sur
d'autres ordis.

La solution est, bien sûr, de s'affranchir des séparateurs.
(Perso, j'utilise : %date:~-2%%date:~3,2%%date:~,2%)

@-salutations

Michel Claveau


j'ai adapté le script selon vos conseils et c'est OK

pour info le format de ma date est jj-mm-aaaa

et madate donnait 27-12-2007
mais la subtitution ne donnait rien.
Est ce que Windows ferait l'operation arith avant la substitution ????

Curieux.

--
Michel HERRSCHER

Avatar
Michel HERRSCHER
Dans un message Michel HERRSCHER disait :

Dans un message MCI (ex do ré Mi chel la si do) [MVP] disait :

Bonjour !

Aaarrff. Très juste.

J'avais oublié que le format de date (pour les batchs) dépend de ce qui
est défini dans les options régionales.
Ce qui explique que ça fonctionne chez moi, et pas forcément sur
d'autres ordis.

La solution est, bien sûr, de s'affranchir des séparateurs.
(Perso, j'utilise : %date:~-2%%date:~3,2%%date:~,2%)

@-salutations

Michel Claveau


j'ai adapté le script selon vos conseils et c'est OK

pour info le format de ma date est jj-mm-aaaa

et madate donnait 27-12-2007
mais la subtitution ne donnait rien.
Est ce que Windows ferait l'operation arith avant la substitution ????

Curieux.


On a trouvé la raison de mon erreur...

en fait j'ai laissé des espaces sur la ligne

set madate = %date%

et avec

set madate=%date%

cela fonctionne bien...

Ceci dit votre solution d'extraction des composantes de la date permet de
s'affranchier des formats personnalisés....

Merci encore de votre aide.
--
Michel HERRSCHER