boucles FOR imbriquées [batch DOS] - Shell/Batch - Programmation
Marsh Posté le 26-06-2006 à 12:43:32
il paraitrait que les batch dos c'est la préhistoire et que depuis il y a le VB Script (fichier .vbs et double click)
en tout cas j'ai lu ça au moins 50 fois sur ce forum!
Marsh Posté le 26-06-2006 à 12:43:42
Oui, c'est possible de les imbriquer.
Maintenant, tes erreurs pourraient être dues à autres choses.
Poste ton script + résumé du problème.
Marsh Posté le 26-06-2006 à 15:54:49
wackevat a écrit : Oui, c'est possible de les imbriquer. |
Dans l'urgence, j'ai dû faire autrement et ai donc effacé tous les essais/tests, mais c'était de ce genre là:
Code :
|
Problème: j'ai jamais rien eu dans toto.txt, et pourtant il y a ce qu'il faut dans les 2 fichiers en entrée...
Me fourvoie-je dans la compréhension du FOR?
subtil >> c'est déjà suffisamment le bordel dans l'application en question(appel php/batch/VB) pour que j'évite un autre type d'appel
Marsh Posté le 26-06-2006 à 16:53:12
Déjà tu peux écrire ta boucle de cette façon :
Code :
|
pour voir ce que ça affiche.
Est-ce qu'il y a des espaces dans %~1 et %~2 ?
Marsh Posté le 26-06-2006 à 17:36:28
Ben mairdalors, ça marche
Je comprend pas, j'ai dû tester comme une ouiche
Merci en tout cas
Marsh Posté le 28-06-2006 à 19:40:06
Question: on ne peut pas déclarer une variable dans une boucle for?
Genre
Code :
|
l'echo ne renvoit rien...C'est normal?
Marsh Posté le 28-06-2006 à 19:50:31
Tu as encore testé "comme une ouiche" même si je ne sais pas ce que c'est
Sinon, toujours aussi moche ta façon de récupérer les tokens
Marsh Posté le 29-06-2006 à 10:14:21
wackevat a écrit : Tu as encore testé "comme une ouiche" même si je ne sais pas ce que c'est |
Une ouiche lorraine >> Le grand détournement
Moche? Pourquoi?
Et donc, tu affirmes à 100% que SET dans un FOR (même imbriqué?) marche correctement? (à savoir la variable en question est disponible hors de la boucle FOR)
L'exemple que je t'ai donné marche chez toi?
Marsh Posté le 29-06-2006 à 15:34:28
Trouvé!
Donc effectivement, ça marche pas, il faut spécifier l'utilisation des Delayed Expansion (?) avec ça:
SETLOCAL ENABLEDELAYEDEXPANSION
Alleluia!
Marsh Posté le 29-06-2006 à 22:55:34
Oui, ça s'appelle l'expansion retardée des variables d'environement
A noter que cette option n'est pas toujours très "confortable" d'usage. Perso je préfère l'appel des procédures, cf. ce topic où j'ai donné un exemple :
http://forum.hardware.fr/hardwaref [...] 2792-1.htm
Sinon, ma remarque sur la mocheté concerne l'énumération des tokens :
tokens=1,2,3,4,5,6
Si tu as besoin de tous les 6 :
tokens=1-6
si seulement les 2, 3, 4 et 6è par exemple :
tokens=2-4,6
Cf. ma réponse du 26-06-2006 à 16:53.
Marsh Posté le 03-07-2006 à 12:53:54
D'accord, je comprend...
Par contre, c'est plus explicite avec la méthode sale
Nouvelle question: l'ordre des paramètres tokens a-t-il une importance?
Code :
|
me renverra-t-il les données dans les variables %%A, %%B, etc... suivant cet ordre?
A savoir cette correspondance:
6 --> %%A
2 --> %%B
5 --> %%C
etc...
J'ai bien peur que non, et ça m'embête fortement...
Marsh Posté le 03-07-2006 à 13:05:15
Certes, mais visiblement, je suis pas très doué pour tester, y'a qu'à voir ce topic
Bref, perso, ça correspond pas et j'aurais voulu une confirmation...
Marsh Posté le 03-07-2006 à 13:31:37
Encore plus embêtant: il saute carrément les champs vides
Si mon fichier contient "champ1;champ2;;champ4"
Code :
|
il me retourne
valeurs = champ1 ** champ2 ** champ4 **
Marsh Posté le 03-07-2006 à 13:53:16
En_Sabah_Nur a écrit : Encore plus embêtant: il saute carrément les champs vides |
C'est par définition
Vois l'aide de
for
pour plus de précisions.
Marsh Posté le 04-07-2006 à 09:52:04
Une dernière question: il me faut insérer != dans une chaîne, seulement, ça marche pas même en entourant de guillemets et en échappant avec ^
Code :
|
renvoit "!="
Comment je peux faire?
edit: je précise que sans guillemets, j'obtiens seulement le signe = ...
Marsh Posté le 04-07-2006 à 11:56:57
ReplyMarsh Posté le 04-07-2006 à 14:29:25
wackevat a écrit :
|
Merci
Ça marche bien en test comme ça, mais c'est plus le cas une fois inclut dans mon batch (seul le = apparait)
J'utilise l'expansion retardée, du coup, le signe ! est peut-être bloqué?
Marsh Posté le 04-07-2006 à 14:50:16
Ah ouais! Bon ben je m'y colle
Encore merci
Marsh Posté le 05-07-2006 à 10:19:31
Nouvelle question:
je voudrais récupérer le résultat d'une commande directement dans une variable, comment je fais? ACtuellement, je passe dans un fichier temporaire, mais c'est beaucoup trop lent du coup...
Comme ça:
Code :
|
L'objectif est de directement avoir le résultat du cat/gawk dans la variable COLUMN_A
C'est possible? (mes recherches sur le net ont été vaines)
Marsh Posté le 05-07-2006 à 12:56:04
J'ai trouvé un truc qui semble marcher:
Code :
|
avec dans _commande.bat:
Code :
|
Marsh Posté le 26-06-2006 à 12:22:41
Après moults tests infructueux à essayer d'imbriquer plusieurs FOR dans un batch sous DOS, en faisant bien gaffe aux paramètres, je suis en train de me demander si c'était possible en fait?
Autre question pour ma culturation personnelle: y'a-t-il une limite de caractère à une ligne de batch?
---------------
XBL : ESN3S | GGPO (3rd strike) : ESN | PSN : Huitxilopochti