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 :

Traitement chaine de caractère


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Par défaut Traitement chaine de caractère
    Bonjour,
    j'aurais aimer savoir comment traiter une chaine de caractère dans mon batch.

    Voila j'ai un script qui me permet de rechercher l'emplacement d'un fichier (xxxx.id) et de le récupérer. Ce script enregistre aussi dans un fichier texte le chemin de ce fichier sous la forme :

    CpathID.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\Documents and Settings\LocalService\Local Settings\Application Data\Lotus\Notes\Data\user.id
    Voici ma question serait - il possible de traiter la chaine de caractère ce trouvant dans CpathID.txt afin d'obtenir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\Documents and Settings\LocalService\Local Settings\Application Data\Lotus\Notes\Data\
    Ce qui me permettrait de coller le fichier user.id que j'ai précedement copier.

    Pour infos user.id est = %username%.id donc peut prendre des noms différents

    Voila ce que j'ai essayer mais cela ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SET IDSourceC=".\CfichierID\%username%.id"
    
    FOR /F "tokens=1,2* delims=%username%" %%a in (CpathID.txt) do echo %%a > CpathID.txt
    
    FOR /F "delims=" %%a in (CpathID.txt) do set pathC="%%a"
    xcopy %IDSourceC% %pathC% /Y
    Merci

  2. #2
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Tu ne peux pas utiliser , le delims attend une serie de caractères.
    En faisant ainsi tu donne comme délimiteur toutes les lettres de %username%.

    Tu as plusieurs options pour traiter ta chaine :

    1. Tu n'as pas besoin d'avoir le nom de fichier dans ton fichier txt. Tu peux alors modifier ton script qui renseigne CpathID.txt pour n'y mettre que le nom du repertoire (avec %~pI par exemple cf aide en ligne de for vers la fin (for /?)).

    2. Tu as besoin d'avoir le nom de fichier dans le txt, mais tu peux ajouter autre chose. Dans ce cas, ajoute une seconde ligne avec uniquement le chemin d'accès dans ton script de recherche.

    3. Ton fichier txt ne peux être modifié. Tu peux effectivement faire une boucle for mais avec un . Il te faudra mettre suffisement de tokens pour être sur de récuperer ton fichier, et récuperer le dernier token non vide.

    4. Toujours pas de modification du txt. Tu fais une boucle en récupérant et concaténant les caractères de ta chaine 1 par 1 en partant de la fin ( ) et dès que tu tombes sur "\" tu as fini.

    5. Ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for %%i in (CpathID.txt) do (
        set pathC="%%~pi"
    )

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Par défaut
    OK merci pour ces infos,
    voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    SET IDSourceD=.\DfichierID\%username%.id
     
    FOR /F "delims=" %%a in (DpathID.txt) do set pathD="%%a" 
    FOR %%i in (%pathD%) do set temp=%%~pi
    SET Dpath=d:%temp%
    xcopy %IDSourceD% %Dpath% /Y
    Pour vérifier le chemin je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo %Dpath% > test.txt
    J'obtiens bien le chemin suivant , qui est le bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d:\Documents and Settings\FJacob\Lotus\Notes\Data\
    Mais la copie ne s'exécute pas , message d'erreur suivant : "Nombre de paramètre non valide"

    Et quand je fais :
    J'obtiens "The system cannot find the path specified" alors que le chemin est correcte. ?

  4. #4
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Il faut mettre des guillemets car tu as des espaces dans ton chemin d'accès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xcopy %IDSourceD% "%Dpath%" /Y

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Par défaut
    Merci tout est ok.

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

Discussions similaires

  1. traitement chaine de caractères dans la création d'une vue
    Par dudu40 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/01/2011, 22h37
  2. [Traitement chaine de caractères] : suppression de guillements
    Par twattiaux dans le forum Administration système
    Réponses: 2
    Dernier message: 20/11/2009, 14h53
  3. Traitement chaine de caractères
    Par emael dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 25/09/2006, 14h50
  4. Traitement de chaine de caractères
    Par lapartdombre dans le forum Langage
    Réponses: 9
    Dernier message: 03/02/2006, 09h29
  5. traitement d'une chaine de caractère
    Par mohamed dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2004, 17h45

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