IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Le fichier Out ayant le même nom que le fichier source [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 126
    Par défaut Le fichier Out ayant le même nom que le fichier source
    Bonsoir les développeurs.

    C'est mon premier message de cette année 2017. Je tiens absolument à vous souhaiter une Bonne et Heureuse Année 2017.

    J'ai un fichier batch qui est fort utile: il supprime dans un fichier .txt toutes les lignes dupliquées appelées aussi doublons.

    En traitant plusieurs fichiers .txt à la fois, il génère qu'un seul fichier appelé Out.txt .

    Existe-t-il un moyen d'avoir pour chaque fichier traité son nom suivi de _Out.txt ? (Exemples: Annuaire A.txt --> Annuaire A_Out.txt, Annuaire B.txt --> Annuaire B_Out.txt, ... )

    Voici le Code Batch en question:

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    chcp 1252 >nul
    setlocal enableDelayedExpansion
    set ligneNbr=1
    for /f "delims=""" %%i in ('type "*.txt"') do (
    set copie=1
    if not exist "Out.txt" echo %%i>>Out.txt
    for /f "delims=""" %%j in ('type "Out.txt"') do if %%j==%%i set copie=0
    if !copie!==1 echo %%i>>Out.txt)
    pause

    Merci de bien vouloir m'aider.

  2. #2
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Salut et bonne année,

    S'il te plait, utilise les balises de code "CODE=bat".
    Essaye ceci:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @echo off
     
    chcp 1252 >nul
     
    setlocal enableDelayedExpansion
     
    set ligneNbr=1
     
    for /f "delims=""" %%i in ('type "*.txt"') do (
     
    set copie=1
    set output_name=%%~ni.txt
     
    if not exist "%output_name%" echo %%i>>%output_name%
     
    for /f "delims=""" %%j in ('type "%output_name%"') do if %%j==%%i set copie=0
     
    if !copie!==1 echo %%i>>!output_name!)
     
    pause

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 126
    Par défaut
    Bonsoir devilsnake88.

    Merci pour ton aide mais cela ne fonctionne pas.

    Je n'ai pas compris le sens de ce message: utilise les balises de code "CODE=bat"

  4. #4
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    @tease: Il y avait un topic qu'il fallait lire avant de poster quelque chose dans lequel tu trouvais la syntaxe pour afficher ton code correctement mais je ne sais plus où il est.
    [^CODE=bat][/CODE] (sans le "^")
    Je n'avais pas eu le temps de tester le code d'hier mais pour la suite, si un code ne fonctionne pas, prend l'habitude de:
    commencer ton code avec:
    et de faire un echo de tes variables pour détecter où se situe le problème.
    Sinon il y a toujours le divin, de son doux nom de @sachadee qui vient au secours de développeurs égarés et leur montre le droit chemin.


    Quelqu'un a vu mes médicaments?

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 126
    Par défaut
    Bonjour devilsnake88 et sachadee!

    @ sachadee: Les deux codes que tu m'as donnés n'éliminent pas les lignes dupliquées contenant des guillemets. Exemple:

    il suffit "d'enregistrer sous" votre fichier "nom-de-fichier.bat"
    il suffit "d'enregistrer sous" votre fichier "nom-de-fichier.bat"
    il suffit "d'enregistrer sous" votre fichier "nom-de-fichier.bat"
    il suffit "d'enregistrer sous" votre fichier "nom-de-fichier.bat"


    Par contre le code que j'ai posté hier les élimine. Je ne sais pas pourquoi. Une idée ?

  6. #6
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    salut,

    Effectivement j'avais pas penser à ça

    Il te suffit de remplacer find par findstr et ça devraît rouler sans prob :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ::By SachaDee - 2017
    @echo off
    for %%a in (*.txt) do call:elimine "%%a"
    echo termin‚ !!
    exit/b
    
    :elimine
    echo Traitement de =^> %1
    for /f "tokens=*" %%a in ('type %1') do findstr "%%a" "out.tmp" 2>nul>nul || >>out.tmp echo %%a
    del %1 && ren "out.tmp" %1

  7. #7
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    pourquoi ne pas directement écraser le fichier original avec les bonnes valeurs ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ::By SachaDee - 2017
    @echo off
    for %%a in (*.txt) do call:elimine "%%a"
    echo termin‚ !!
    exit/b
    
    :elimine
    echo Traitement de =^> %1
    for /f "tokens=*" %%a in ('type %1') do find "%%a" "out.tmp" 2>nul>nul || >>out.tmp echo %%a
    del %1 && ren "out.tmp" %1
    Mais si tu veux vraiment créer un autre fichier avec _out :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ::By SachaDee - 2017
    @echo off
    for %%a in (*.txt) do call:elimine "%%a"
    echo termin‚ !!
    exit/b
    
    :elimine
    echo Traitement de =^> %1
    for /f "tokens=*" %%a in ('type %1') do find "%%a" %~n1_out.txt 2>nul>nul || >>%~n1_out.txt echo %%a

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/08/2016, 23h33
  2. [Batch] Renommer le fichier output avec le même nom que le fichier input
    Par torvald dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 07/06/2016, 01h56
  3. Réponses: 2
    Dernier message: 17/08/2015, 09h56
  4. Réponses: 5
    Dernier message: 15/04/2015, 20h39
  5. [EJB3 Entity] Clé étrangère ayant le même nom que la clé primaire
    Par krum dans le forum Java EE
    Réponses: 3
    Dernier message: 19/03/2009, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo