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 :

1 commande sur plusieurs lignes


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Par défaut 1 commande sur plusieurs lignes
    salut,

    question bete je crois, mais je n'ai pas vu dans la FAQ ni dans la recherche forum... je sais pas je dois mal demander

    bref, je suis en train de faire une commande curl un poil longue et afin de mieux la lire dans mon .bat je voudrais la découper en plusieurs lignes.

    Je pense à

    passer de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -Z "ici des parametre ouhh la la y'en a plein"   -I "encore des parametres" -R "décidement c'est vraiment vraiment vraiment long tt ca"
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    curl -Z "ici des parametre ouhh la la y'en a plein"       \
        -I "encore des parametres"                                \
        -R "décidement c'est vraiment vraiment vraiment long tt ca"
    (je crois que sous unix c'est \ le symbole pour découper une ligne de commande, donc je le mets ici pour l'exemple... ca doit etre autre chose sous windows mais je ne sais pas quoi)

    merci

  2. #2
    Expert confirmé
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Par défaut
    Je ne pense pas que ce soit possible en batch malheureusement.

  3. #3
    Membre éclairé

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Par défaut
    ok. Merci.
    je ne suis qu'à moitié surpris.

    Si ca se confirme, ca vaudrait peut-être la peine de le renseigner dans la FAQ non?

  4. #4
    Membre éprouvé
    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
    Par défaut
    De dire dans la FAQ que l'on ne peut pas découper un syntaxe sur plusieur ligne ? pensse tu que ce soit vraiment indispenssable ?

  5. #5
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    as-tu essayer avec le caractère caret ^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    XCopy C:\Walid D:\dest  ^
        /L                   ^
         /F                   ^
           /I                  ^
            /V

  6. #6
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    salut tout le monde,

    fourchette, rien ne t’empêche de concaténer tes paramètres avec la commande «set». Cela te permettra d'avoir l'effet recherché, une meilleure lisibilité.

  7. #7
    Membre éprouvé
    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
    Par défaut
    C'est une idée ca

  8. #8
    Membre éclairé

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Par défaut
    Citation Envoyé par I'm_HERE Voir le message
    as-tu essayer avec le caractère caret ^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    XCopy C:\Walid D:\dest  ^
        /L                   ^
         /F                   ^
           /I                  ^
            /V
    CA MARCHE !!! (en tout cas pour moi...)

    bien joué I_M_HERE !

    => je trouve que ca mériterait une entrée dans la FAQ Batch non ?

  9. #9
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    non!

    Blague à part, ce qu'a proposé I'm_HERE doit être plus vu comme une astuce (une manière un peu détournée d'utiliser le circonflexe: caractère d'échappement CLI windows) qu'une réelle fonctionnalité de l'interpréteur de commande.
    Sur un plan plus technique, la résultante de l'opération (codage par défaut EOL windows) est une ou plusieurs lettres invisibles (LF:0xA) qui se baladent sur la ligne des paramètres, et on ne peut malheureusement pas anticiper de ce qu'en fera chaque logiciel susceptible d'être piloté par la ligne de commande. C'est pour ça que c'est à utiliser avec parcimonie.

    Ce constat, je l'avait fait à l'époque sur XP sp1 il me semble. Peut-être que maintenant, il faudrait de nouveau sortir les débogueurs.
    Quoi qu'il en soit, la possibilité a été levée, les alertes qui vont avec aussi.

  10. #10
    Membre éclairé

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Par défaut
    ok restons-en là. merci pour le warning.

    je clique qd mm sur le bouton résolu si personne n'a d'objection

    pour info, je suis sous XP SP3 si ca peut servir à qqn un jour...

  11. #11
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Par défaut batch : langage ou arnaque
    Bonsoir à tous,

    Désolé de déterrer un post de longue date mais ...

    Blague à part, ce qu'a proposé I'm_HERE doit être plus vu comme une astuce (une manière un peu détournée d'utiliser le circonflexe: caractère d'échappement CLI windows) qu'une réelle fonctionnalité de l'interpréteur de commande.
    Je ne comprends pas bien ... Il y a quelques temps j'ai découvert cette astuce. J'étais très content car enfin mes scripts allaient gagner en clarté ! J'allais même poster sur developpez.net pour faire profiter les autres de cette découverte, car elle n'était pas présente dans la FAQ (c'est la raison pour laquelle j'ai trouvé ce post). Et là je découvre quoi ? Que c'est une astuce qui opère dans un cadre très limité ...

    De même, tout à l'heure j'ai lu Les commentaires en Batch de I'm_HERE et il s'avère qu'il y a des bugs dans l'utilisation de REM (qui est la commande officielle rappelons le !), et que :: qui est un détournement du :label est plus une astuce qu'une science exacte. J'ai déjà utilisé ::commentaire par le passé car je l'ai vu dans certains scripts, mais je n'ai jamais trouvé de littérature mentionnant son caractère officiel. Du coup je l'ai abandonné par crainte que certains scripts fonctionnent et pas d'autres ... J'ajoute à cela l'astuce que je trouve la plus perverse: ping 0.0.0.0 -n 10 > NUL pour attendre 10s (j'hallucine ... on utilise le timer de la commande ping pour simuler une attente). Mais que fait cro$oft ??? ... c'est quand même pas la mer à boire une petite commande qui permet d'attendre !

    Finalement, le batch n'est il pas une belle arnaque constitué de trucs et astuces qui ne fonctionnent que dans un cadre précis ? Ce que je veux dire, c'est que tout ça manque de crédibilité ... Imaginez un débutant qui découvre ça et là les astuces. Il lui faut apprendre que chaque astuce ne fonctionne que sous certaines conditions. Ajoutez à cela la complexité des commandes, la gestion des espaces, des caractères spéciaux, l'expansion retardée des variables, etc. J'ai commencé mon apprentissage de la programmation avec le C. Certes ce n'est pas un langage simple, ni inné, mais il m'a semblé cohérent (pour ce que j'en connais) ... tout le contraire du batch finalement !

    Oserais je demander s'il existe LA documentation officielle de la programmation batch. Et puis tiens tant qu'on y est, cro$oft ne pourrait il pas (re)mettre la main à la patte pour rendre son langage cohérent et sa syntaxe claire ? Créer un batch V2 en somme ...

    Bref je suis indigné, et je suis proche d'une position visant à totalement déconseiller à quiconque ce langage qui n'en n'est pas un ... Ou alors je suis naïf finalement, car sans que je le soupçonne, 99% des logiciels que j'utilise quotidiennement ne sont en fait qu'un amas d'astuces ... (dites moi que non sinon je vais sérieusement reconsidérer mon intérêt pour la programmation !!!)

  12. #12
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut lenainjaune,
    Citation Envoyé par lenainjaune Voir le message
    Je ne comprends pas bien ... Il y a quelques temps j'ai découvert cette astuce. J'étais très content car enfin mes scripts allaient gagner en clarté ! J'allais même poster sur developpez.net pour faire profiter les autres de cette découverte, car elle n'était pas présente dans la FAQ (c'est la raison pour laquelle j'ai trouvé ce post). Et là je découvre quoi ? Que c'est une astuce qui opère dans un cadre très limité ...
    elle fonctionne sur la majorité des commandes donc le cadre de son fonctionnement "même si c'est une astuce" n'est pas très limité, ensuite, on peux vérifier facilement si ça beug ou pas avec quelques petits tests.

    Citation Envoyé par lenainjaune Voir le message
    De même, tout à l'heure j'ai lu Les commentaires en Batch de I'm_HERE et il s'avère qu'il y a des bugs dans l'utilisation de REM (qui est la commande officielle rappelons le !), et que :: qui est un détournement du :label est plus une astuce qu'une science exacte. J'ai déjà utilisé ::commentaire par le passé car je l'ai vu dans certains scripts, mais je n'ai jamais trouvé de littérature mentionnant son caractère officiel. Du coup je l'ai abandonné par crainte que certains scripts fonctionnent et pas d'autres ...
    le double deux-points "::" est une solution contourner des scripteurs pour mettre en commentaire, elle est utiliser pour rendre le code plus lisible et elle est déconseiller dans les blocs de codes

    Citation Envoyé par lenainjaune Voir le message
    J'ajoute à cela l'astuce que je trouve la plus perverse: ping 0.0.0.0 -n 10 > NUL pour attendre 10s (j'hallucine ... on utilise le timer de la commande ping pour simuler une attente). Mais que fait cro$oft ??? ... c'est quand même pas la mer à boire une petite commande qui permet d'attendre !
    pour le Ping 0.0.0.0 10 >nul je crois qu'il y a maintenant sleep.exe et
    timeout.exe qui sont implémenter par défaut dans win7, non..


    Citation Envoyé par lenainjaune Voir le message
    Finalement, le batch n'est il pas une belle arnaque constitué de trucs et astuces qui ne fonctionnent que dans un cadre précis ? Ce que je veux dire, c'est que tout ça manque de crédibilité ... Imaginez un débutant qui découvre ça et là les astuces. Il lui faut apprendre que chaque astuce ne fonctionne que sous certaines conditions. Ajoutez à cela la complexité des commandes, la gestion des espaces, des caractères spéciaux, l'expansion retardée des variables, etc. J'ai commencé mon apprentissage de la programmation avec le C. Certes ce n'est pas un langage simple, ni inné, mais il m'a semblé cohérent (pour ce que j'en connais) ... tout le contraire du batch finalement !
    c'est vrai que le langage de script "batch" n'offre pas au scripteur un large champ de travail pour la création de programme poussées, c'est un langage pauvre, mais facile à comprendre, dans certains cas, on est devant des codes en vbscript qui font 50 lignes, peuvent se faire en batch en 10 lignes..toute la gestion des fichiers/répertoire , le formatage des données ..etc, peux se faire assez facilement avec batch..c'est ça sa raison d'être, un langage assez facile à comprendre et qui permet de faire des tâches simples/parfois complexes

    Citation Envoyé par lenainjaune Voir le message
    Oserais je demander s'il existe LA documentation officielle de la programmation batch. Et puis tiens tant qu'on y est, cro$oft ne pourrait il pas (re)mettre la main à la patte pour rendre son langage cohérent et sa syntaxe claire ? Créer un batch V2 en somme ...
    il y a quelques documentations mais qui n'offrent,malheureusement, que le strict minimum.

    pour le batch V2, tu peux utiliser maintenant PowerShell2 qui est implémenter par defaut dans win7

    Citation Envoyé par lenainjaune Voir le message
    Bref je suis indigné, et je suis proche d'une position visant à totalement déconseiller à quiconque ce langage qui n'en n'est pas un ...
    je respecte ton choix, mais pour moi, ce n'est pas une bonne idée de déconseiller un langage, qui est implémenter par défaut dans tous les versions windows, et qui nous offre un large choix de commandes visant la majorité des tâches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hh ntcmds.chm::/ntcmds.htm
    ce que je déconseille à mon tour, c'est d'imaginer que tout ce qu'on peux faire sous les shell *sh peut se faire sous batch. Batch est conçu pour nous aider dans des cas précis alors il ne faut pas lui demander ce qu'il ne peux/sais pas faire.

  13. #13
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Salut I'm_HERE;


    Citation Envoyé par I'm_HERE Voir le message
    le double deux-points "::" est une solution contourner des scripteurs pour mettre en commentaire, elle est utiliser pour rendre le code plus lisible et elle est déconseiller dans les blocs de codes
    Qu'est ce que tu entends par blocs de code et pourquoi est-ce déconseillé dans les blocs ? Merci

  14. #14
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut minnesota,

    un bloc de code est une suite d'instructions mise entre parenthèses.

    voici deux exemples:


    Exemple1:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (
    echo hello
    :: chaine 1
    :: chaine 2
    echo world 
    )
    Exemple2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /L %%a in (1 1 5) do (
      :: debut increment
       echo %%a
      :: fin increment
    )
    pour plus d'exemples sur les commentaires voir par ici

  15. #15
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Je viens d'essayer. Avec 1 commentaire ça passe, mais au-delà, ça pose problème.

    Merci.

    <edit>

    Par contre ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    REM %~
    echo hey maitre !
    et ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    REM %^
    echo hey maitre !
    ça passe sans problème

    </edit>

  16. #16
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    je n'avais pas tester sous vista ou win7

    voici ce que donne mon XPSP3:

    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
    16
    17
    18
    19
    20
    c:\> cat r1.bat
    @echo off
    REM %~
    echo hey maitre !
    
    
    c:\> r1.bat
    L'utilisation de l'opérateur chemin dans la substitution
    de paramètre de commande n'est pas valide : %~
    
    
    Pour les formats valides, entrez CALL .? ou FOR /?
    
    c:\> cat r2.bat
    @echo off
    REM %^
    echo hey maitre !
    
    c:\> r2.bat
    c:\>

  17. #17
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Je ne sais pas ce que j'ai tapé tout à l'heure, mais là j'obtiens les mêmes erreurs que toi. Cela dit ce qui cause l'erreur c'est %~ et non pas REM. Ce code-ci génère le même problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo fffffff
    echo %~
    echo offff
    PS: je suis aussi sous XP

  18. #18
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Par défaut
    Salut !

    Merci pour m'avoir apporté ces précisions ...

    pour le Ping 0.0.0.0 10 >nul je crois qu'il y a maintenant sleep.exe et
    timeout.exe qui sont implémenter par défaut dans win7, non..
    Autant pour moi ... et merci pour timeout je ne connaissais pas !

    pour le batch V2, tu peux utiliser maintenant PowerShell2 qui est implémenter par defaut dans win7
    Ah ... Ok ! Je me pencherais sur PowerShell2 quand j'aurais le temps ...

    cordialement
    lnj

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

Discussions similaires

  1. Une commande sur plusieurs lignes
    Par NFHnv dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/09/2013, 10h25
  2. Commande Sql sur plusieurs ligne
    Par zebi42 dans le forum Access
    Réponses: 2
    Dernier message: 15/02/2011, 20h28
  3. commande sql sur plusieurs lignes dans un shell
    Par oguevel dans le forum DB2
    Réponses: 2
    Dernier message: 14/01/2010, 08h48
  4. Comment écrire la commande d'un job sur plusieurs lignes ?
    Par clementratel dans le forum Microsoft BI
    Réponses: 4
    Dernier message: 10/11/2008, 17h02
  5. Define sur plusieurs lignes
    Par Gogoye dans le forum C
    Réponses: 6
    Dernier message: 06/10/2003, 11h45

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