Supprimer le premier caractère
NormandieB
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
NormandieB Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
NormandieB Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je suis en train de faire un batch pour mettre à jour les répertoires client de mon programme.
Ces Répertoire ont un nom comme suit : $001, $002, $003...$XXX.
Pour mettre à jour ces répertoire, j'exécute le programme avec en paramètre le nom du répertoire sans le $.
exemple : MonProgramme.exe -d001
Là je commence à avoir beaucoup de répertoires.
Donc un petit BATCH automatisant ça m'aiderai beaucoup.
Voici la base de mon BATCH :
rem remplissage du fichier rep.txt
dir $* /ad/b>D:\rep.txt
@echo off
for /F %%I in ('type d:\rep.txt') do (
MonProgramme.exe -d%%I
)
Je n'arrive pas à virer le $ dans %%I
Si vous avez une idée, Merci beaucoup.
Ces Répertoire ont un nom comme suit : $001, $002, $003...$XXX.
Pour mettre à jour ces répertoire, j'exécute le programme avec en paramètre le nom du répertoire sans le $.
exemple : MonProgramme.exe -d001
Là je commence à avoir beaucoup de répertoires.
Donc un petit BATCH automatisant ça m'aiderai beaucoup.
Voici la base de mon BATCH :
rem remplissage du fichier rep.txt
dir $* /ad/b>D:\rep.txt
@echo off
for /F %%I in ('type d:\rep.txt') do (
MonProgramme.exe -d%%I
)
Je n'arrive pas à virer le $ dans %%I
Si vous avez une idée, Merci beaucoup.
A voir également:
- Supprimer le premier caractère
- Supprimer rond bleu whatsapp - Guide
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Supprimer une page word - Guide
5 réponses
Bonjour,
Tu pourrais essayer quelque chose comme ça :
Tu pourrais essayer quelque chose comme ça :
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
monprogramme.exe -d!rep!
)
Bonjour jogadyl,
j'ai testé ta solution, impécable.
Grand merci de ton aide.
Voici le programme en entier :
rem remplissage du fichier rep.txt
dir $* /ad/b>D:\rep.txt
@echo off
for /F %%I in ('type d:\rep.txt') do (
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
MonProgramme.exe -d!rep!
)
)
j'ai testé ta solution, impécable.
Grand merci de ton aide.
Voici le programme en entier :
rem remplissage du fichier rep.txt
dir $* /ad/b>D:\rep.txt
@echo off
for /F %%I in ('type d:\rep.txt') do (
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
MonProgramme.exe -d!rep!
)
)
Rebonjour,
en fait, ça fonctionne pas...
ça me paraissais long, j'ai cassé le processus et j'ai fait un echo plutot que de lancer directement le programme :
rem remplissage du fichier rep.txt
dir $* /ad/b>D:\rep.txt
@echo off
for /F %%I in ('type d:\rep.txt') do (
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
echo MonProgramme.exe -d!rep!
)
)
en fait il lance le programme mais je ne sais pas si il change de répertoire.
das la fenêtre DOS, j'ai :
MonProgramme.exe -d001
MonProgramme.exe -d002
MonProgramme.exe -d003
MonProgramme.exe -d004
MonProgramme.exe -d005
MonProgramme.exe -d006
MonProgramme.exe -d007
MonProgramme.exe -d008
MonProgramme.exe -d009
MonProgramme.exe -d010
MonProgramme.exe -d011
MonProgramme.exe -d012
MonProgramme.exe -d013
MonProgramme.exe -d014
MonProgramme.exe -d015
MonProgramme.exe -d016
...
MonProgramme.exe -dXXX
et j'ai ces ligne plusieurs fois, entrecoupées de :
"Niveau maximal de récursivité de setlocal a été atteint"
OK, je crois que je l'ai...
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
echo MonProgramme.exe -d!rep!
)
Tout simplement que je comprends rien... Il fallait que je remplace mon programme entier par le tiens jogadyl.
Là ça ne me mets les lignes echo qu'une seule fois.
Je vais tester un réel.
J'ai pas trop compris le pourquoi du comment de ton programme, je pense que c'est le /d du FOR qui arrange tout.
Encore merci.
en fait, ça fonctionne pas...
ça me paraissais long, j'ai cassé le processus et j'ai fait un echo plutot que de lancer directement le programme :
rem remplissage du fichier rep.txt
dir $* /ad/b>D:\rep.txt
@echo off
for /F %%I in ('type d:\rep.txt') do (
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
echo MonProgramme.exe -d!rep!
)
)
en fait il lance le programme mais je ne sais pas si il change de répertoire.
das la fenêtre DOS, j'ai :
MonProgramme.exe -d001
MonProgramme.exe -d002
MonProgramme.exe -d003
MonProgramme.exe -d004
MonProgramme.exe -d005
MonProgramme.exe -d006
MonProgramme.exe -d007
MonProgramme.exe -d008
MonProgramme.exe -d009
MonProgramme.exe -d010
MonProgramme.exe -d011
MonProgramme.exe -d012
MonProgramme.exe -d013
MonProgramme.exe -d014
MonProgramme.exe -d015
MonProgramme.exe -d016
...
MonProgramme.exe -dXXX
et j'ai ces ligne plusieurs fois, entrecoupées de :
"Niveau maximal de récursivité de setlocal a été atteint"
OK, je crois que je l'ai...
setlocal enabledelayedexpansion
@echo off
for /d %%I in ($*) do (
set rep=%%I
set rep=!rep:$=!
echo MonProgramme.exe -d!rep!
)
Tout simplement que je comprends rien... Il fallait que je remplace mon programme entier par le tiens jogadyl.
Là ça ne me mets les lignes echo qu'une seule fois.
Je vais tester un réel.
J'ai pas trop compris le pourquoi du comment de ton programme, je pense que c'est le /d du FOR qui arrange tout.
Encore merci.
Ok ! J'explique un peu.
D'abord, comme du l'as compris, il n'y a qu'une seule boucle et ce n'est pas la peine de faire un fichier avec le nom des répertoires.
For /d %%I in ($*)
La variable %%I prend successivement le nom des répertoires. Sans le /d, la variable prendrait le nom des fichiers plutôt que celui des répertoires.
setlocal enabledelayedexpasion
Permet d'utiliser le ! à la place du % pour forcer la variable à être évaluée au cours du traitement. Sinon elle garderait toujours la même valeur.
set rep=%%I
set rep=!rep:$=!
la variable rep est d'abord chargée avec le nom du répertoire
et ensuite on remplace les "$" par rien du tout dans le nom du répertoire.
(regarde l'aide de la commande SET)
D'abord, comme du l'as compris, il n'y a qu'une seule boucle et ce n'est pas la peine de faire un fichier avec le nom des répertoires.
For /d %%I in ($*)
La variable %%I prend successivement le nom des répertoires. Sans le /d, la variable prendrait le nom des fichiers plutôt que celui des répertoires.
setlocal enabledelayedexpasion
Permet d'utiliser le ! à la place du % pour forcer la variable à être évaluée au cours du traitement. Sinon elle garderait toujours la même valeur.
set rep=%%I
set rep=!rep:$=!
la variable rep est d'abord chargée avec le nom du répertoire
et ensuite on remplace les "$" par rien du tout dans le nom du répertoire.
(regarde l'aide de la commande SET)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question