Bonjour tout le monde,
Je travaille actuellement sur un exécutable type fichier commande "CMD" ou autrement dit "BATCH" .bat me permettant d'automatiser une opération de saisie "copier/coller" dans plusieurs fichiers ".txt".
Pour vous donner plus d'informations, j'ai un dossier regroupant l'ensemble des fichiers Text à traiter et le contenu de ces derniers est comme suit :
****************************** ********************
Commentaires ligne 1 ...
Commentaires ligne 2 ...
Commentaires ligne X ...
.XSTART programme_1 ; (commentaires)
Programme ligne 1 ...
Programme ligne 2 ...
Programme ligne X ...
.XSTOP
.XSTART programme_2 ; (commentaires)
Programme ligne 1 ...
Programme ligne 2 ...
Programme ligne X ...
.XSTOP
.
.
.
.XSTART programme_X ; (commentaires)
Programme ligne 1 ...
Programme ligne 2 ...
Programme ligne X ...
.XSTOP
****************************** **********************
Ce que je fais en fait c'est de copier le "nom du programme" qui est juste après la syntaxe ".XSTART" et de le coller après la syntaxe ".XSTOP". Cette opération prend beaucoups de temps et répétitive en la faisant manuellement...
La structure de quelques fichiers .txt peut aussi avoir la forme ci-dessous:
****************************** ********************
Commentaires ligne 1 ...
Commentaires ligne 2 ...
Commentaires ligne X ...
.XSTART programme ; (commentaires)
.XSTART sous_programme_1 ; (commentaires)
Programme ligne 1 ...
Programme ligne 2 ...
Programme ligne X ...
.XSTOP
.XSTART sous_programme_2 ; (commentaires)
Programme ligne 1 ...
Programme ligne 2 ...
Programme ligne X ...
.XSTOP
.
.
.
.XSTART sous_programme_X ; (commentaires)
Programme ligne 1 ...
Programme ligne 2 ...
Programme ligne X ...
.XSTOP
.XSTOP
****************************** **********************
Dans ce cas, la dernière syntaxe ".XSTOP" correspond à la première syntaxe ".XSTART"
En tant que débutant en CMD, j'ai demandé l'aide d'un ami qui m'a envoyé le code ci-dessous :
Code:@echo off setlocal disableDelayedExpansion for %%F in (%*) do ( set /a i=0 set "ID.0=" >"%%F.new" ( for /f "delims=" %%L in ('findstr /n "^" "C:Chemin vers les fichiers Text"') do for /f "tokens=1,2,3 delims=: " %%A in ("%%L") do ( if "%%B" == ".XSTART" ( set /a i+=1 setlocal enableDelayedExpansion for %%I in (!i!) do ( endlocal set "ID.%%I=%%C" ) ) if "%%B" == ".XSTOP" ( setlocal enableDelayedExpansion for %%I in (!i!) do ( (echo .XSTOP !ID.%%I!) endlocal set "ID.%%I=" set /a "1/i, i-=1)" 2>nul %= division by zero error prevents negative i values =% ) ) else ( set "ln=%%L" setlocal enableDelayedExpansion (echo(!ln:*:=!) endlocal ) ) ) move /y "%%~F.new" "%%F" >nul )
En exécutant le fichier .bat rien ne change dans les fichiers .txt, je croix qu'il y a quelque chose à changer pour pouvoir exécuter la commande ... J'ai fais de multiples modifications sur le code mais toujours avec le même résulat.
Je serai tellement reconaissant si quelqu'un peut m'aider à résoudre ce problème.
Bien à vous,
BS
-----