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 :

Problème de chaine caractère avec espace [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut Problème de chaine caractère avec espace
    Bonjour,

    Pour automatiser l'installation de mes nouveaux poste pour des clients, j'ai automatisé l'installation de quelque tâche.
    Là j'ai fais une petite fonction qui remplace une chaîne de caractère dans un fichier de configuration.
    J'ai un petit soucis lorsque ma chaîne caractère comporte des espaces cela met en vrac ma fonction.

    Note: Si j'utilise les guillemets la fonction refonctionne mais %CLIENT_NAME% désigne le nom de l'utilisateur dans un répertoire (ex: C:\Users\toto\Downloads) et du coup je me retrouve avec C:\Users\"toto"\Downloads)

    Quel autre solution me proposez vous pour régler mon problème?

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    call:searchAndReplace %COBIAN_BACKUP_SOURCES%\MainList.lst COBIAN_USER_NAME %CLIENT_NAME% %COBIAN_BACKUP_DIRECTORY%\DB\MainList1.lst
    
    
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('type %1') do (
    	set $ligne=%%a
    	set $ligne=!$ligne:%2=%3!
    	echo !$ligne!>>%4)
    )
    goto:eof

  2. #2
    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,

    èlimine les guillemets en sortie :



  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Ah oui ingénieux!

    Pas encore testé mais le code me parait bon.

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Je confirme, ça fonctionne!
    Mais mon mon fichier originale est en utf16LE et je me retrouve avec un fichier en ANSI.
    Pourriez vous m'aidé à le passé en utf16le?

    Je sais plus vers quoi m'orienté, vb etc, je sens que l'orsque je vais rajouter des accents dans mes variables ça va bien être prise de tête, merci pour votre aide.
    Peut être appelé un powershell?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('type %1') do (
    	set $ligne=%%a
    	set $ligne=!$ligne:%2=%3!
    	set $ligne=!$ligne:"=!
    	echo !$ligne!>>%4
    )
    goto:eof

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut

    Essayez comme ceci et dis moi le résultat :
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('CMD /U /C type %1') do (
        set $ligne=%%a
        set $ligne=!$ligne:%2=%3!
        set $ligne=!$ligne:"=!
        echo !$ligne!>>%4
    )
    goto:eof

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Merci,

    j'obtiens juste la lettre C dans mon fichier...

    Voici mon fichier que je tente de modifier cbEngine.zip

    Surement une grosse erreur, j'utilise Notepad++ comme éditeur, j'utilisais avant UTF8 sans bom par défaut, j'ai passé en ANSI.

    Code batch : 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
    21
    22
    23
    24
     
    @echo off
    cls
     
    setlocal enableextensions enabledelayedexpansion
     
    title %0 Script 
     
    call:searchAndReplace "C:\cbEngine.ini" dudu "toto" "C:\cbEngine.ini2"
     
    pause
    exit
     
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('CMD /U /C type %1') do (
    	set $ligne=%%a
    	set $ligne=!$ligne:%2=%3!
    	set $ligne=!$ligne:"=!
    	echo !$ligne!>>%4
    )
    goto:eof

  7. #7
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut

    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
    @echo off
    Title %~n0 Script 
    setlocal enableextensions enabledelayedexpansion
    call:SearchAndReplace "cbEngine.ini" "dudu" "Hackoo" "cbEngine2.ini"
    Start "" "cbEngine2.ini"
    exit
     
    :SearchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('type %1') do (
        set "$ligne=%%a"
        set $ligne=!$ligne:%~2=%~3!
        set $ligne=!$ligne:"=!
        echo !$ligne!>>%4
    )
    goto:eof

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    J'ai du mal à te suivre sur ce coup là...
    "cbEngine2.ini" contient des données de configuration d'un logiciel, l’exécuter ne fait que affiché dans Notepad les données qu'il contient

    Une autre proposition?

  9. #9
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut
    Citation Envoyé par dudux2 Voir le message
    J'ai du mal à te suivre sur ce coup là...
    "cbEngine2.ini" contient des données de configuration d'un logiciel, l’exécuter ne fait que affiché dans Notepad les données qu'il contient

    Une autre proposition?
    C'est moi que j'ai mal à te suivre : enlève la ligne ou il y a la commande Start dans le script
    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
    @echo off
    Title %~n0 Script 
    setlocal enableextensions enabledelayedexpansion
    call:SearchAndReplace "cbEngine.ini" "dudu" "Mr Bean" "cbEngine2.ini"
    exit
     
    :SearchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('type %1') do (
        set "$ligne=%%a"
        set $ligne=!$ligne:%~2=%~3!
        set $ligne=!$ligne:"=!
        echo !$ligne!>>%4
    )
    goto:eof

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Oui en effet, c'est moi,
    Le script fonctionne mais je voudrais que mon fichier soit en UTF16LE en sortie comme l'original, mais pour le moment j'ai pas la solution.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    En faite ta proposition pour garder le fichier en UTF16LE ne fonctionne pas "CMD /U /C " j'obtiens juste un C dans mon fichier

  12. #12
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut
    Citation Envoyé par dudux2 Voir le message
    En faite ta proposition pour garder le fichier en UTF16LE ne fonctionne pas "CMD /U /C " j'obtiens juste un C dans mon fichier
    Oublies cette propostion !
    le output est en UTF8 c'est ça ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Ah la la je n'avais même pas vu les petite subtilité que tu ma proposé!

    Mais je ne suis toujours pas en utf16 en sortie...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Citation Envoyé par hackoofr Voir le message
    Oublies cette propostion !
    le output est en UTF8 c'est ça ?
    Oui je suis en utf8 en sortie

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 87
    Par défaut
    Il y a t'il une solution à mon problème en batch?

    Sinon je suis preneur pour faire un appel de fonction vers un powershell...

    Quelqu'un pour m'aider à mettre mon fichier de sortie en UTF16LE?

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

Discussions similaires

  1. Concaténation de chaines de caractères avec espaces
    Par Anduriel dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2016, 20h54
  2. [RegEx] preg_replace un caractère avec espace avant et après
    Par redah75 dans le forum Langage
    Réponses: 24
    Dernier message: 27/09/2011, 20h35
  3. problème encodage des caractère avec netbeans
    Par space2alk dans le forum NetBeans
    Réponses: 3
    Dernier message: 19/07/2010, 16h34
  4. Traitement des chaines caractères avec un séparateur
    Par Lolitaaa dans le forum Général Java
    Réponses: 2
    Dernier message: 09/07/2010, 12h21
  5. Problème : concordance des caractères avec gridview
    Par kangaxx dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/10/2007, 12h21

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