Manipulation de chaine de caracteres
Résolu/Fermé
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
-
Modifié par Xeep le 15/12/2014 à 14:46
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 19 déc. 2014 à 08:58
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 19 déc. 2014 à 08:58
A voir également:
- Manipulation de chaine de caracteres
- Caractères ascii - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractères spéciaux clavier azerty - Guide
- Plus de chaine tv - Guide
- Exemple de mot de passe à 8 caractères - Guide
5 réponses
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
15 déc. 2014 à 14:48
15 déc. 2014 à 14:48
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.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
15 déc. 2014 à 15:24
15 déc. 2014 à 15:24
hello
est-ce que ChaineDeCaractères ou Chiffres sont de même longueur pour chaque répertoire ?
est-ce que ChaineDeCaractères ou Chiffres sont de même longueur pour chaque répertoire ?
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
15 déc. 2014 à 16:41
15 déc. 2014 à 16:41
non, ils ne sont pas de même longueur.
j'ai pensé à extraire les chiffres, puis extraire les lettres et finalement les concaténer avec un tiret au milieux.
Mais là encore, je bloque l'extraction.
Merci.
j'ai pensé à extraire les chiffres, puis extraire les lettres et finalement les concaténer avec un tiret au milieux.
Mais là encore, je bloque l'extraction.
Merci.
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
16 déc. 2014 à 12:02
16 déc. 2014 à 12:02
up
s'il vous plait
s'il vous plait
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 16/12/2014 à 13:09
Modifié par dubcek le 16/12/2014 à 13:09
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%
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
16 déc. 2014 à 15:14
16 déc. 2014 à 15:14
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
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 16/12/2014 à 15:53
Modifié par dubcek le 16/12/2014 à 15:53
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%
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
16 déc. 2014 à 16:39
16 déc. 2014 à 16:39
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.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
16 déc. 2014 à 16:51
16 déc. 2014 à 16:51
voir post 7
la boucle for est exécutée manuellement en dehors du script
la boucle for est exécutée manuellement en dehors du script
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
18 déc. 2014 à 11:11
18 déc. 2014 à 11:11
OK,
Vous pouvez m'expliquer comment cc récupère le passage de paramètres %a ?
Merci.
Vous pouvez m'expliquer comment cc récupère le passage de paramètres %a ?
Merci.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
18 déc. 2014 à 12:28
18 déc. 2014 à 12:28
%1 est le 1er paramètre passé à cc
set t=%1
set txt=%1
Xeep
Messages postés
26
Date d'inscription
mercredi 22 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2014
18 déc. 2014 à 14:14
18 déc. 2014 à 14:14
d'accord,
Je suis désolé, encore deux questions ;)
que veut dire cette syntaxe : @(cc %a) ?
j'ai modifié le script cc.bat en ren.bat et j'ai modifier @(cc %a) en @(ren %a)
mais ça n'a pas marché.
Vous savez pourquoi ?
Merci.
Xeep
Je suis désolé, encore deux questions ;)
que veut dire cette syntaxe : @(cc %a) ?
j'ai modifié le script cc.bat en ren.bat et j'ai modifier @(cc %a) en @(ren %a)
mais ça n'a pas marché.
Vous savez pourquoi ?
Merci.
Xeep