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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    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
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    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
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    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 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    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
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    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

+ 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, 21h54
  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, 21h35
  3. problème encodage des caractère avec netbeans
    Par space2alk dans le forum NetBeans
    Réponses: 3
    Dernier message: 19/07/2010, 17h34
  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, 13h21
  5. Problème : concordance des caractères avec gridview
    Par kangaxx dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/10/2007, 13h21

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