pb de chaines

Le
moi
bonjour,

je veux mettre au point un script ( cmd)
qui fait subir à plusieurs répertoires le même traitement
pour utiliser une boucle et une unique "procédure"
je tente de concaténer les chaines mais
je n'arrive pas au résultat attendu
la manipulation des chaines m'échappe

je donne plus bas un extrait significatif
je pense que les procédures sont bonnes
et vous fais donc grâce du reste ;o)

en revanche la ligne de la boucle
FOR /L %%q IN (1,1,8) DO
ne fonctionne pas car les variables
ne prennent pas les bonnes valeurs au bon moment


merci d'avance,

HB
=
REM une série de répertoire

set ch1=F:\Chemin1
set ch2=F:\Chemin2
set ch3=
etc
set ch8=F:\Chemin8

rem traitement pour chacun, si toutefois il existe

for /l %%q in (1,1,8) do if exist %CH%%q% call :traite1 %CH%%q%
goto suite1

rem Procédure
:traite1
cd %1
rem traitement des sous répertoire

for /d %%n in (*) do call:sousrep1 "%%n"
rem vide le niveau racine
del /q "%1*"
goto :eof


etc
=
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Méta-MCI \(MVP\)
Le #706856
Bonjour !

Pour pouvoir faire de l'indirection de variable, dans les batchs, il
faut activer "'l'expansion retardée".
Voici un exemple d'utilisation, avec une revision (libre) de ton script
:

echo off
SetLocal
SetLocal EnableDelayedExpansion

set ch1=F:...Chemin1
set ch2=F:...Chemin2
set ch3 etc ...
set ch8=F:...Chemin8

for /L %%q in (1,1,8) do call :traite1 ch%%q
endlocal
goto :EOF

:traite1
if exist "!%*!" (
cd /D"!%*!"
for /D %%n in (*) do echo call :sousrep1 "%%n"
echo del /q "%**"
)
goto :eof



@-salutations
--
Michel Claveau
MCI \(ex do ré Mi chel la si do\) [MVP]
Le #706854
Re !

J'ai commis qq bourdes, dont celle-ci :

remplacer :
echo del /q "%**"
par :
echo del /q "!%*!*"

@-salutations

Michel Claveau
moi
Le #706686
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :

Re !

J'ai commis qq bourdes, dont celle-ci :

remplacer :
echo del /q "%**"
par :
echo del /q "!%*!*"


bonjour,


Merci beaucoup,

j'avais tenté !%q!
mais sans le setlocal EnableDelayedExpansion
...

L'art du batch est délicat
et je n'ai encore jamais trouvé
de document explicatif "clair" ...
( clair pour moi, bien sûr ;o)
(contrairement au VBS qui est "très documenté" sur le web )

C'est donc "un peu au pif" que je tente d'avancer..

Merci encore,

HB

Publicité
Poster une réponse
Anonyme