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

Windows Discussion :

[BATCH] test sur substring


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut [BATCH] test sur substring
    Hello,

    Ca fait un petit moment que je cherche, en ayant trouvé des infos, mais malgré tout ce que j'ai, je n'arrive pas à faire fonctionner la création de substring en commande Dos.

    voici mon code :

    set condition=%1:~0,2%
    sachant que le contenu de la variable %1 est Asia

    echo "%condition%"
    est sensé me retourner "As", et non pas "Asia:~0,2" comme il le fait...

    Quelqu'un a-t-il une suggestion ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Précision :

    J'arrive à récupérer le substring que je souhaite, et à l'afficher avec un echo, par contre, impossible de l'utiliser dans une condition, ou même de le mettre dans une autre variable.

  3. #3
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    tu ne peut pas faire ca avec la variable %1.


    Il faut faire comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set condition=%~1
    
    set condition=%condition:~0,2%
    
    echo %condition%

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    merci, ca m'a déjà permis d'avancer. Par contre, je me retrouve avec un autre soucis.

    J'ai bien ma variable avec le bon contenu, mais dès que je l'utilise en dessous pour un test, ca me fait fermer la fenêtre dos sans message d'erreur.

    if "%condition%"=="Ne"
    copy /Y "W:\chemin_A\%1\%3.cat" "\chemin_B\%1\catalog\%3.new"
    else
    copy /Y "W:\chemin_A\%1\%3.cat" "\chemin_C\%1\catalog\%3.new"

    if errorlevel 1 goto errorOfCopy

  5. #5
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    essaye comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if "%condition%"=="Ne" (
        copy /Y "W:\chemin_A\%1\%3.cat" "\chemin_B\%1\catalog\%3.new"
      ) else (
        copy /Y "W:\chemin_A\%1\%3.cat" "\chemin_C\%1\catalog\%3.new"
     )
    if errorlevel 1 goto errorOfCopy
    pour error level tu devrai pluto mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not %errorlevel%==0 goto errorOfCopy

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    voila ce que j'ai dans mon script

    set condition=%1
    set condition=%condition:~0,2%

    if "%condition%"=="Ne"
    (
    copy /Y "W:\chemin_A\%1\%3.cat" "\\%2\chemin_B\%1\catalog\%3.new"
    )
    else
    (
    copy /Y "W:\chemin_A\%1\%3.cat" "\\%2\chemin_A\%1\catalog\%3.new"
    )

    if not %errorlevel%==0 goto errorOfCopy
    rem if errorlevel 1 goto errorOfCopy
    je sais pas si c'est moi qui voit plus clair à cause du temps passé dessus, mais ca ne tourne pas, et je ne sais toujours pas pourquoi... a partir du if, le script s'arrête. Si j'enlève cette partie, il tourne sans problème...

  7. #7
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    et la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    set condition=%1
    set condition=%condition:~0,2%
    
    if "%condition%"=="Ne"
    (
    copy /Y "W:\chemin_A\%1\%3.cat" "\\%2\chemin_B\%1\catalog\%3.new"
    )
    else
    (
    copy /Y "W:\chemin_A\%1\%3.cat" "\\%2\chemin_A\%1\catalog\%3.new"
    )
    
    if not %errorlevel%==0 goto errorOfCopy
    rem if errorlevel 1 goto errorOfCopy

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    c'est moi ou... il n'y a pas de différence avec mon code précédent ?

  9. #9
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    si je croi que tu avait oublier un espace

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    c'est ce que j'ai cru effectivement, mais ce n'est pas le cas.

    j'en ai profité pour mettre des echo dans les deux parties du IF, et visiblement, le programme n'entre même pas dedans, ni dans le if, ni dans le else, et s'arrête.

    j'en ai aussi mis pour m'assurer que %condition% contenait bien ce qu'il fallait, et tout est en ordre de ce côté la.

  11. #11
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Je ne sais pas pourquoi le if ne marche pas, il a l'air correcte, mais tu a oublier des ~:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    set condition=%1
    set condition=%condition:~0,2%
    
    if "%condition%"=="Ne"
    (
    copy /Y "W:\chemin_A\%~1\%~3.cat" "\\%~2\chemin_B\%~1\catalog\%3.new"
    )
    else
    (
    copy /Y "W:\chemin_A\%~1\%~3.cat" "\\%~2\chemin_A\%~1\catalog\%~3.new"
    )
    
    if not %errorlevel%==0 goto errorOfCopy
    rem if errorlevel 1 goto errorOfCopy
    La variable %1 ajouter des guillemets, avec %~1 il n'y a pas de guillemets

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    j'ai fais le test concernant les ~, au final ca ne change pas grand chose quand j'affiche le chemin des fichiers avec un echo

  13. #13
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    avec le ~ il n'y a pas les guillemets, et quand tu met %1 au milieu d'un chemin de fichier il ne faut pas les guillemets

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    oui j'ai bien compris, mais avant la mise en place du if, ce batch tournait déjà avec les mêmes chemins, sans pour autant avoir besoin du ~.

    mais sachant que de toute facon, le script plante en début de if, la question ne se pose pas, comme on atteint même pas les lignes concernées dans la structure conditionnelle.

    j'avoue cependant que je suis quand même halluciné que ce foutu if ne fonctionne pas, alors que tout à l'air parfaitement correct.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    j'ai trouvé, et j'en suis d'autant plus halluciné... voila à quoi doit ressembler le code pour fonctionner :

    if "%condition%"=="Ne" (
    copy /Y "W:\chemin_A\%~1\%~3.cat" "\\%~2\chemin_B\%~1\catalog\%3.new"
    ) else (
    copy /Y "W:\chemin_A\%~1\%~3.cat" "\\%~2\chemin_A\%~1\catalog\%~3.new"
    )
    ce n'était qu'une bête question de placement de parenthèse dans la structure conditionnelle...

  16. #16
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    J'y avait pensser en plus, mais je pensser me tromper

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    merci beaucoup pour ton aide en tout cas !

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

Discussions similaires

  1. [BATCH] Aide sur boucle for et test
    Par t_om84 dans le forum Windows
    Réponses: 3
    Dernier message: 07/06/2006, 10h12
  2. test sur un recordset
    Par georgeabitbol dans le forum ASP
    Réponses: 2
    Dernier message: 15/07/2004, 14h39
  3. [langage] Test sur un caractère
    Par GLDavid dans le forum Langage
    Réponses: 8
    Dernier message: 07/07/2004, 18h03
  4. test sur fichiers[forms9i]
    Par Challenger dans le forum Forms
    Réponses: 6
    Dernier message: 14/06/2004, 17h25
  5. Test sur un champs vide
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 27/04/2004, 12h54

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