Manipulation de chaine de caracteres
Résolu
Xeep
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerai pouvoir, avec un script, renommer une centaine de répertoires .
Ces répertoires sont composés de cette manière :
ChaineDeCaractèresChiffres
Les chaines de caractères sont différentes de répertoire en répertoire, et de même pour la serie de chiffres.
Le but est d'arriver à insérer un ( - ) comme suite :
ChaineDeCaractères-Chiffres
c'est à dire séparer les chiffres de la chaine.
Avez vous une idée ?
Merci.
Xeep
J'aimerai pouvoir, avec un script, renommer une centaine de répertoires .
Ces répertoires sont composés de cette manière :
ChaineDeCaractèresChiffres
Les chaines de caractères sont différentes de répertoire en répertoire, et de même pour la serie de chiffres.
Le but est d'arriver à insérer un ( - ) comme suite :
ChaineDeCaractères-Chiffres
c'est à dire séparer les chiffres de la chaine.
Avez vous une idée ?
Merci.
Xeep
A voir également:
- Manipulation de chaine de caracteres
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Plus de chaine tv - Guide
- Chaine tnt gratuite sur mobile - Guide
- Exemple de mot de passe à 8 caractères - Guide
5 réponses
pour arriver à travailler séquentiellement sur chaque répertoire, c'est ok.
J'y arrive, c'est dans la partie insertion du " - " que ça bloque.
Merci.
J'y arrive, c'est dans la partie insertion du " - " que ça bloque.
Merci.
essayer ce code, à mettre dans une boucle avec le nom des répertoires
je fais une boucle qui enlève un car. jusqu'à ce que le 1er car. soit un chiffre, j'ai alors la taille du texte.
je fais une boucle qui enlève un car. jusqu'à ce que le 1er car. soit un chiffre, j'ai alors la taille du texte.
C:> cc
texte ?abcdef1234
ren abcdef1234 abcdef-1234
C:>type cc.bat
@echo off
setlocal enableDelayedExpansion
set /p txt=texte ?
set t=%txt%
set l=0
:loop33
echo %t% | findstr "^[0-9]" > NUL
if !errorlevel! EQU 0 goto fin33
set t=%t:~1%
set /A l += 1
goto loop33
)
:fin33
echo ren %txt% !txt:~0,%l%!-%t%
Merci beaucoup, j'ai étudié votre code et je comprend votre logique.
Savez vous comment intégrer ce code dans une boucle telle que celle ci :
qui me permet de traverser tout le répertoire et d'appliquer le traitement (renommage avec le tiret) sur chacun des sous répertoires.
Encore merci.
Savez vous comment intégrer ce code dans une boucle telle que celle ci :
for /D %%a in (*.*) do [traitement]
qui me permet de traverser tout le répertoire et d'appliquer le traitement (renommage avec le tiret) sur chacun des sous répertoires.
Encore merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'arrive pas avec la boucle for dans le .bat
essayer ca, enlever le echo devant ren si c'est ok
essayer ca, enlever le echo devant ren si c'est ok
C:> for /D %a in (*.*) do @(cc %a)
C:> type cc.bat
@echo off
setlocal enableDelayedExpansion
set t=%1
set txt=%1
set l=0
:loop33
echo %t% | findstr "^[0-9]" > NUL
if !errorlevel! EQU 0 goto fin33
set t=%t:~1%
set /A l += 1
goto loop33
:fin33
echo ren %txt% !txt:~0,%l%!-%t%
j'ai mis dans un dossier 3 répertoires que je veux renommer :
ABC123
ABCD4566
AZERTY78945
dans ce dossier j'ai aussi mis le script ci-dessous :
le but est d'obtenir :
ABC-123
ABCD-4566
AZERTY-78945
mais ça me renomme que le premier rep et pas correctement en plus.
Avez vous une idée ?
Merci.
ABC123
ABCD4566
AZERTY78945
dans ce dossier j'ai aussi mis le script ci-dessous :
setlocal enableDelayedExpansion
for /D %%a in (*.*) do (
set t=%%a
set txt=%%a
set name=%%a
set l=0
:loop33
echo %t% | findstr "^[0-9]" > NUL
if !errorlevel! EQU 0 goto fin33
set t=%t:~1%
set /A l += 1
goto loop33
)
:fin33
ren %txt% !txt:~0,%l%!-%t%
move %name% %txt%
)
le but est d'obtenir :
ABC-123
ABCD-4566
AZERTY-78945
mais ça me renomme que le premier rep et pas correctement en plus.
Avez vous une idée ?
Merci.