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
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
Méta-MCI \(MVP\)
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
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
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]
Re !
J'ai commis qq bourdes, dont celle-ci :
remplacer : echo del /q "%**" par : echo del /q "!%*!*"
@-salutations
Michel Claveau
Re !
J'ai commis qq bourdes, dont celle-ci :
remplacer :
echo del /q "%**"
par :
echo del /q "!%*!*"
remplacer : echo del /q "%**" par : echo del /q "!%*!*"
@-salutations
Michel Claveau
moi
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
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..
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..