Besoin d'aide pour un script windows

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
MichelB
Batcheur occasionnel
Messages : 7
Enregistré le : 20 juil. 2017 15:32

Besoin d'aide pour un script windows

Message par MichelB »

Bonjour,

j'ai besoin d’écrire un petit script pour incrémenter un "nometchiffre" de 1 à 40000 uniquement la valeur numérique, la partie alphabétique reste pareille.
à titre d'exemple:
J'ai un fichier TXT, qui contient:
JOB001
5 lignes de texte
Puis
JOB002
5 lignes de texte
JOB003
5 lignes de texte
Etc..
je souhaite modifier toutes les valeurs JOBXXX par JOB001 jusque JOB40000

je suis preneur de tout conseil et aide pour réaliser ce petit script.

Merci par avance.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Besoin d'aide pour un script windows

Message par barnabe0057 »

Bonjour,

Tu ne peux pas modifier le fichier directement, mais tu peux en créer un nouveau à partir du fichier source :

Code : Tout sélectionner

@echo off
Setlocal enableextensions enableDelayedExpansion

set source=fichier.txt
set destination=nouveau.txt

set /a nombre=0

for /f "tokens=*" %%A in (%source%) do (
    if "%%A"=="" (echo.>> %destination%) else (
    (echo %%A | findstr "JOB" > nul) && (set /a nombre+=1 & echo JOB!nombre! >> %destination%) || (echo %%A >> %destination%)
    )
)

notepad %destination%

Endlocal
exit
MichelB
Batcheur occasionnel
Messages : 7
Enregistré le : 20 juil. 2017 15:32

Re: Besoin d'aide pour un script windows

Message par MichelB »

Bonjour,

je vous remercie pour ce script qui fonctionne bien je viens de procéder un test.
Par contre, je ne comprends pas pourquoi le script s’arrête au chiffre 5038??
j'ai tenté de comprendre le déroulement du script mais je ne vois pas cette limite.

Merci par avance de votre aide.
MichelB
Batcheur occasionnel
Messages : 7
Enregistré le : 20 juil. 2017 15:32

Re: Besoin d'aide pour un script windows

Message par MichelB »

Bonjour,

je vous remercie pour ce script qui fonctionne bien je viens de procéder un test. j'aurai souhaité que les chiffres soient sur trois positions et non pas une comme actuellement avec ce script.
Par contre, je ne comprends pas pourquoi le script s’arrête au chiffre 5038??
j'ai tenté de comprendre le déroulement du script mais je ne vois pas cette limite.

Merci par avance de votre aide.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Besoin d'aide pour un script windows

Message par barnabe0057 »

Bonjour,

Il n'y a pas de limitation, la variable s'incrémente de 1 à chaque fois que la chaine contient le mot "JOB".

Je ne comprend pas non plus pourquoi ça s'arrête, peut-être qu'un expert pourra nous éclairer.

Concernant l'affichage du nombre sur 3 digits, voilà la modification :

Code : Tout sélectionner

@echo off
Setlocal enableextensions enableDelayedExpansion

set source=sortie.txt
set destination=nouveau.txt

set /a nombre=0

for /f "tokens=*" %%A in (%source%) do (
    if "%%A"=="" (echo.>> %destination%) else (
    (echo %%A | findstr /i "JOB" > nul) && (call :action) || (echo %%A >> %destination%)
    )
)

notepad %destination%

Endlocal
exit

:action
set /a nombre+=1
if !nombre! LSS 100 (set nombre=0!nombre!)
if !nombre! LSS 10 (set nombre=0!nombre!)
echo JOB!nombre! >> %destination%
goto :eof

rem
MichelB
Batcheur occasionnel
Messages : 7
Enregistré le : 20 juil. 2017 15:32

Re: Besoin d'aide pour un script windows

Message par MichelB »

Bonjour,

Je pense que la raison du blocage est dans ta réponse.
En fait tu dis "à chaque fois que la chaine contient le mot "JOB"." Donc il faudrait que mon fichier SOURCE contienne au moins les 40 000 lignes soit autant de fois que je souhaite avoir en Destination?
Est-ce exact ou peut-on simplifier ce scenario?

Merci de ton aide.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Besoin d'aide pour un script windows

Message par barnabe0057 »

Bonjour,

Je ne suis pas sûr d'avoir compris ton dernier message, qu'entends-tu par "simplifier ce scénario" ?
MichelB
Batcheur occasionnel
Messages : 7
Enregistré le : 20 juil. 2017 15:32

Re: Besoin d'aide pour un script windows

Message par MichelB »

Bonjour,

La question est doit-on avoir en Source un fichier contenant 40 000 fois le mot JOB pour qu'en sortie on puisse avoir les nombres de 1 à 40 000 ?
Quand je dis simplifier, cela veut dire, peut-on avoir un fichier Source avec uniquement une fois le mot job et le script boucle jusque 40 000?
j’espère que c'est plus clair ainsi.
merci de votre aide.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Besoin d'aide pour un script windows

Message par barnabe0057 »

Concernant ta première question : dans l'état actuel du script, oui

Concernant ta deuxième question : oui tout est possible, mais dans ce cas je ne comprend pas ce que tu veux faire avec le numéro, tu veux numéroter chaque ligne ?
Répondre