Supprimer une variable dans un fichier texte

Roberto210 -  
BigCoool Messages postés 4 Statut Membre -
Bonjour,

Les utilisateurs de ma société lancent un fichier bat pour annoncer le numéro du traitement qu'ils effectuent déclenchant alors un enregistrement dans un fichier journal.txt.
Dans ce fichier, je peux voir qui traite quoi en temps réel et je souhaite que quand l'utilisateur a fini, il appuie sur une touche et cela supprime la ligne le concernant dans le fichier.

Cependant, lorsque l'utilisateur appuie sur une touche, c'est toute les lignes qui sont supprimées. (type journal.txt | find /v "%username% .....

Ma question : comment faire pour que la variable %username% soit pris en compte pour l'utilisateur unique ?

Merci d'avance pour votre précieuse aide !

Mon code :

echo.
echo ## Traitement 1 ##
echo.
echo.
set date = for /f "tokens=*" %%a in ('date /t')
for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
echo %username% login Traitement 1 le %date% à %heure%:%minute% >>journal.txt
echo == "POUR QUITTER LE TRAITEMENT, APPUYEZ SUR LA TOUCHE ESPACE..."== & pause >nul
for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heureout=%%a
for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minuteout=%%b

type journal.txt | find /v "%username% login Traitement 1">journal.txt
goto end

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    je n'ai pas tout saisi du problème, mais essayer de ne pas lire et écrire dans le même fichier
    type journal.txt | find /v "%username% login Traitement 1">journal2.txt
    0
  2. BigCoool Messages postés 4 Statut Membre
     
    Bonjours,
    Désoler pour le retard mais j'ai vue que l'affaire n'était pas résolu..
    Que voulez vous faire après l’appuie sur espace ?

    - supprimer la ligne que l'utilisateur à créer :
    @echo off
    echo.
    echo ## Traitement 1 ##
    echo.
    echo.
    set date = for /f "tokens=*" %%a in ('date /t') 
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
    echo %username% login Traitement 1 le %date% à %heure%:%minute% >>journal.txt
    echo    == "POUR QUITTER LE TRAITEMENT, APPUYEZ SUR LA TOUCHE ESPACE..."== & pause >nul
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heureout=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minuteout=%%a
    for /f "tokens=*" %%a in (journal.txt) do (
    if not "%%a" EQU "%username% login Traitement 1 le %date% à %heure%:%minute% " echo %%a>>journal2.txt
    )
    del journal.txt
    ren journal2.txt journal.txt


    - la remplacer la ligne que l'utilisateur à créer :
    @echo off
    echo.
    echo ## Traitement 1 ##
    echo.
    echo.
    set date = for /f "tokens=*" %%a in ('date /t') 
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
    echo %username% login Traitement 1 le %date% à %heure%:%minute% >>journal.txt
    echo    == "POUR QUITTER LE TRAITEMENT, APPUYEZ SUR LA TOUCHE ESPACE..."== & pause >nul
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heureout=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minuteout=%%b
    for /f "tokens=*" %%a in (journal.txt) do (
    if not "%%a" EQU "%username% login Traitement 1 le %date% à %heure%:%minute% " (echo %%a>>journal2.txt) else (echo %username% out Traitement 1 à %heureout%:%minuteout%>>journal2.txt)
    )
    del journal.txt
    ren journal2.txt journal.txt


    - ajouter une ligne après la ligne que l'utilisateur à créer
    @echo off
    echo.
    echo ## Traitement 1 ##
    echo.
    echo.
    set date = for /f "tokens=*" %%a in ('date /t') 
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
    echo %username% login Traitement 1 le %date% à %heure%:%minute% >>journal.txt
    echo    == "POUR QUITTER LE TRAITEMENT, APPUYEZ SUR LA TOUCHE ESPACE..."== & pause >nul
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heureout=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minuteout=%%b
    for /f "tokens=*" %%a in (journal.txt) do (
    if not "%%a" EQU "%username% login Traitement 1 le %date% à %heure%:%minute% " (echo %%a>>journal2.txt) else (echo %%a>>journal2.txt & echo %username% out Traitement 1 à %heureout%:%minuteout%>>journal2.txt)
    )
    del journal.txt
    ren journal2.txt journal.txt


    -ajouter une ligne à la fin du fichier
    @echo off
    echo.
    echo ## Traitement 1 ##
    echo.
    echo.
    set date = for /f "tokens=*" %%a in ('date /t') 
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
    echo %username% login Traitement 1 le %date% à %heure%:%minute% >>journal.txt
    echo    == "POUR QUITTER LE TRAITEMENT, APPUYEZ SUR LA TOUCHE ESPACE..."== & pause >nul
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heureout=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minuteout=%%b
    echo %username% out Traitement 1 à %heureout%:%minuteout%>>journal.txt
    0