j'ai un petit probleme avec un fichier batch qui doit renommer des
répertoires automatiquement. Il a pour but de supprimer le dernier caractère
de chaque repertoire.
Le voici:
for /D %%R in (*) do (
echo %%R
set DestDir=%%R:~0,-1%
echo Destdir=%DestDir%
echo REN %%R %DestDir%
ren %%R %DestDir%
set SrcDir=
set DestDir=
)
Le probleme est que cette manipulation n'est pas appliquée (set
DestDir=%%R:~0,-1%)
lorsque le script est exécuté, la commande suivante "echo Destdir=%DestDir%"
me donne: Destdir=(vide)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude BELLAMY
Dans le message :, Guillaume a pris la peine d'écrire ce qui suit :
Bonjour a tous,
j'ai un petit probleme avec un fichier batch qui doit renommer des répertoires automatiquement. Il a pour but de supprimer le dernier caractère de chaque repertoire.
Le voici: for /D %%R in (*) do ( echo %%R
set DestDir=%%R:~0,-1% NANNNNNNNNNNNNNNNNNNNNNNNNNN !
DEUX ERREURS ! 1) Dans une boucle où on manipule des variables d'environnement, on doit utiliser l'expansion retardée, qu ipermet de faire évoluer une variable d'environnement à l'intérieur d'une boucle! (exécute la commande "SET /?" pour avoir des explications à ce sujet)
Et pour cela, le caractère "%" est remplacé par "!"
2) Tu ne pas appliquer une syntaxe de variable d'environnement à une variable de boucle !
Donc il faut procéder en 2 temps : set DestDir=%%R set DestDir=!Destdir:~0,-1!
[...] Le probleme est que cette manipulation n'est pas appliquée (set DestDir=%%R:~0,-1%) NORMAL !
lorsque le script est exécuté, la commande suivante "echo Destdir=%DestDir%" me donne: Destdir=(vide) NORMAL !
Quelqu'un a une idée de la ou cela peut venir? Je te l'ai dit plus haut...
Ton script doit être écrit ainsi : --------------------------- @echo off for /D %%R in (*) do ( echo %%R set DestDir=%%R set DestDir=!DestDir:~0,-1! echo Destdir=!DestDir! echo REN %%R !DestDir! ren %%R !DestDir! ) set DestDir ---------------------------
(évidemment j'ai testé!) Alors, elle est pas belle la Vie ? ;-) !
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Dans le message :3F49956E-66C7-4DE0-8E5D-B1AAC5782198@microsoft.com,
Guillaume <Guillaume@discussions.microsoft.com> a pris la peine d'écrire ce
qui suit :
Bonjour a tous,
j'ai un petit probleme avec un fichier batch qui doit renommer des
répertoires automatiquement. Il a pour but de supprimer le dernier
caractère de chaque repertoire.
Le voici:
for /D %%R in (*) do (
echo %%R
set DestDir=%%R:~0,-1%
NANNNNNNNNNNNNNNNNNNNNNNNNNN !
DEUX ERREURS !
1) Dans une boucle où on manipule des variables d'environnement,
on doit utiliser l'expansion retardée, qu ipermet de faire évoluer
une variable d'environnement à l'intérieur d'une boucle!
(exécute la commande "SET /?" pour avoir des explications à ce sujet)
Et pour cela, le caractère "%" est remplacé par "!"
2) Tu ne pas appliquer une syntaxe de variable d'environnement
à une variable de boucle !
Donc il faut procéder en 2 temps :
set DestDir=%%R
set DestDir=!Destdir:~0,-1!
[...]
Le probleme est que cette manipulation n'est pas appliquée
(set DestDir=%%R:~0,-1%)
NORMAL !
lorsque le script est exécuté, la commande suivante "echo
Destdir=%DestDir%" me donne: Destdir=(vide)
NORMAL !
Quelqu'un a une idée de la ou cela peut venir?
Je te l'ai dit plus haut...
Ton script doit être écrit ainsi :
---------------------------
@echo off
for /D %%R in (*) do (
echo %%R
set DestDir=%%R
set DestDir=!DestDir:~0,-1!
echo Destdir=!DestDir!
echo REN %%R !DestDir!
ren %%R !DestDir!
)
set DestDir ---------------------------
(évidemment j'ai testé!)
Alors, elle est pas belle la Vie ? ;-) !
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Dans le message :, Guillaume a pris la peine d'écrire ce qui suit :
Bonjour a tous,
j'ai un petit probleme avec un fichier batch qui doit renommer des répertoires automatiquement. Il a pour but de supprimer le dernier caractère de chaque repertoire.
Le voici: for /D %%R in (*) do ( echo %%R
set DestDir=%%R:~0,-1% NANNNNNNNNNNNNNNNNNNNNNNNNNN !
DEUX ERREURS ! 1) Dans une boucle où on manipule des variables d'environnement, on doit utiliser l'expansion retardée, qu ipermet de faire évoluer une variable d'environnement à l'intérieur d'une boucle! (exécute la commande "SET /?" pour avoir des explications à ce sujet)
Et pour cela, le caractère "%" est remplacé par "!"
2) Tu ne pas appliquer une syntaxe de variable d'environnement à une variable de boucle !
Donc il faut procéder en 2 temps : set DestDir=%%R set DestDir=!Destdir:~0,-1!
[...] Le probleme est que cette manipulation n'est pas appliquée (set DestDir=%%R:~0,-1%) NORMAL !
lorsque le script est exécuté, la commande suivante "echo Destdir=%DestDir%" me donne: Destdir=(vide) NORMAL !
Quelqu'un a une idée de la ou cela peut venir? Je te l'ai dit plus haut...
Ton script doit être écrit ainsi : --------------------------- @echo off for /D %%R in (*) do ( echo %%R set DestDir=%%R set DestDir=!DestDir:~0,-1! echo Destdir=!DestDir! echo REN %%R !DestDir! ren %%R !DestDir! ) set DestDir ---------------------------
(évidemment j'ai testé!) Alors, elle est pas belle la Vie ? ;-) !
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Guillaume
DEUX ERREURS ! 1) Dans une boucle où on manipule des variables d'environnement, on doit utiliser l'expansion retardée, qu ipermet de faire évoluer une variable d'environnement à l'intérieur d'une boucle! (exécute la commande "SET /?" pour avoir des explications à ce sujet)
Et pour cela, le caractère "%" est remplacé par "!" Donc c'est à ca que cela sert l'expansion retardée... Je n'avais pas bien lu
ou en diagonale.
2) Tu ne pas appliquer une syntaxe de variable d'environnement à une variable de boucle !
Donc il faut procéder en 2 temps : set DestDir=%%R set DestDir=!Destdir:~0,-1! c'est ce que j'avais fait au debut, mais a force de chercher et de faire
n'importe quoi, voila ou ca m'a mené :)
Ton script doit être écrit ainsi : ---------------------------
@echo off for /D %%R in (*) do ( echo %%R set DestDir=%%R set DestDir=!DestDir:~0,-1! echo Destdir=!DestDir! echo REN %%R !DestDir! ren %%R !DestDir! ) set DestDir > ---------------------------
(évidemment j'ai testé!) Alors, elle est pas belle la Vie ? ;-) !
Moi je n'ai pas testé, mais je suis sur que ca marche!
Merci beaucoup & bonne journée. Guillaume
DEUX ERREURS !
1) Dans une boucle où on manipule des variables d'environnement,
on doit utiliser l'expansion retardée, qu ipermet de faire évoluer
une variable d'environnement à l'intérieur d'une boucle!
(exécute la commande "SET /?" pour avoir des explications à ce sujet)
Et pour cela, le caractère "%" est remplacé par "!"
Donc c'est à ca que cela sert l'expansion retardée... Je n'avais pas bien lu
ou en diagonale.
2) Tu ne pas appliquer une syntaxe de variable d'environnement
à une variable de boucle !
Donc il faut procéder en 2 temps :
set DestDir=%%R
set DestDir=!Destdir:~0,-1!
c'est ce que j'avais fait au debut, mais a force de chercher et de faire
n'importe quoi, voila ou ca m'a mené :)
Ton script doit être écrit ainsi :
---------------------------
@echo off
for /D %%R in (*) do (
echo %%R
set DestDir=%%R
set DestDir=!DestDir:~0,-1!
echo Destdir=!DestDir!
echo REN %%R !DestDir!
ren %%R !DestDir!
)
set DestDir > ---------------------------
(évidemment j'ai testé!)
Alors, elle est pas belle la Vie ? ;-) !
Moi je n'ai pas testé, mais je suis sur que ca marche!
DEUX ERREURS ! 1) Dans une boucle où on manipule des variables d'environnement, on doit utiliser l'expansion retardée, qu ipermet de faire évoluer une variable d'environnement à l'intérieur d'une boucle! (exécute la commande "SET /?" pour avoir des explications à ce sujet)
Et pour cela, le caractère "%" est remplacé par "!" Donc c'est à ca que cela sert l'expansion retardée... Je n'avais pas bien lu
ou en diagonale.
2) Tu ne pas appliquer une syntaxe de variable d'environnement à une variable de boucle !
Donc il faut procéder en 2 temps : set DestDir=%%R set DestDir=!Destdir:~0,-1! c'est ce que j'avais fait au debut, mais a force de chercher et de faire
n'importe quoi, voila ou ca m'a mené :)
Ton script doit être écrit ainsi : ---------------------------
@echo off for /D %%R in (*) do ( echo %%R set DestDir=%%R set DestDir=!DestDir:~0,-1! echo Destdir=!DestDir! echo REN %%R !DestDir! ren %%R !DestDir! ) set DestDir > ---------------------------
(évidemment j'ai testé!) Alors, elle est pas belle la Vie ? ;-) !
Moi je n'ai pas testé, mais je suis sur que ca marche!
Merci beaucoup & bonne journée. Guillaume
Gilles LAURENT
"Guillaume" a écrit dans le message de news:
Bonsoir,
|| DEUX ERREURS !
Non, TROIS car il est nécessaire de s'assurer que l'expansion des variables d'environnement est activée. Pour cela il est possible d'utiliser la commande 'setlocal' qui d'une part permet d'activer cette fonctionnalité et d'autre part de préserver l'environnement initial.
@echo off setlocal enabledelayedexpansion
for /D %%R in (*) do ( echo %%R set DestDir=%%R set DestDir=!DestDir:~0,-1! echo Destdir=!DestDir! echo REN %%R !DestDir! ren %%R !DestDir! )
endlocal
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Guillaume" <Guillaume@discussions.microsoft.com> a écrit dans le
message de news:D6878EF7-ABD5-41CD-97F6-25CE80A0FE08@microsoft.com
Bonsoir,
|| DEUX ERREURS !
Non, TROIS car il est nécessaire de s'assurer que l'expansion des
variables d'environnement est activée. Pour cela il est possible
d'utiliser la commande 'setlocal' qui d'une part permet d'activer cette
fonctionnalité et d'autre part de préserver l'environnement initial.
@echo off
setlocal enabledelayedexpansion
for /D %%R in (*) do (
echo %%R
set DestDir=%%R
set DestDir=!DestDir:~0,-1!
echo Destdir=!DestDir!
echo REN %%R !DestDir!
ren %%R !DestDir!
)
endlocal
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Non, TROIS car il est nécessaire de s'assurer que l'expansion des variables d'environnement est activée. Pour cela il est possible d'utiliser la commande 'setlocal' qui d'une part permet d'activer cette fonctionnalité et d'autre part de préserver l'environnement initial.
@echo off setlocal enabledelayedexpansion
for /D %%R in (*) do ( echo %%R set DestDir=%%R set DestDir=!DestDir:~0,-1! echo Destdir=!DestDir! echo REN %%R !DestDir! ren %%R !DestDir! )
endlocal
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD