Votre question

[BATCH] Sa marche pas .... commande + script !

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
17 Janvier 2006 19:40:44

Bon voila alors mon problem est le suivant :

on ne peu pas mettre de goto lorsque que l'on est dans une "boucle for" ..... comment faire dans ce cas ?? esqu'il y a une autre commande à utiliser ?

Voici ce que j'aimerais faire :
  1. for /F "tokens=1,1* delims=" %%i in (log.txt) do (
  2. if %evite%==aucun goto suite
  3. if "%%i"==%evite%* goto fin
  4. suite
  5. move /y "%%i" "%destination%"
  6. :fin
  7. )


Etcomment faire pour que la commande : "cls" n'efface pas tout ce qu'il y a d'écris mais seulmement les 2 ligne au dessus de la commande ...
Esque c'est possible ?

Si vous pouviez m'aider ....
Merci !

Autres pages sur : batch marche commande script

a b L Programmation
17 Janvier 2006 21:06:28

ah bon ? on peut pas mettre de goto dans un FOR...

Sinon tu peux tout mettre dans un IF en utilisant les parenthèses non ?

Et si tu veux sortir de la boucle il faut faire une variable booléenne:
  1. set termine=faux
  2. for /F "tokens=1,1* delims=" %%i in (log.txt) do (
  3. if %termine%==faux (
  4. 'traitement ici
  5. 'a la place d'un goto exeterieur mettre set termine=vrai
  6. )
  7. )

17 Janvier 2006 23:23:12

C'est quoi mon problem dans ce script :

  1. for /F "tokens=1,1* delims=" %%i in (log.txt) do (
  2. if not "%%i"=="%evite%*" move /y "%%i" "%destination%"
  3. echo .
  4. )


je vois pas du tout !! Pourtant meme si %%i==%evite%* sa effectue quand meme le "move" !!
De plus à la fin de la "boucle for" ma fenetre DOS se ferme !

Merci !
Contenus similaires
a b L Programmation
18 Janvier 2006 13:21:51

est-tu certain que c'est égal ?
si %%i=azerty et %evite%=azerty
tu compares "azerty" et "azerty*" => il y a un caractère en plus différent, donc ça colle pas.
18 Janvier 2006 14:04:58

Alors je m'explique : non je ne suis pas sur que ce soir egal !
Ce que j'aimerais comparer c'est sa par exemple :

set evite=C:\258\
set var2=C:\258\fichier.txt

don cdans ce cas je ne veu pas que mon "move" soit executer car justement le chemin de "%var2%"=="%evite%*" !! L'étoile que je met à la fin c'est juste pour lui dire de comparer que le début de la chaine de caractère !

et au contraire si

set evite=C:\WINDOWS\
set var2=C:\Program Files\

Comme "%evite%*" n'est pas egal à "%var2%" alors le "move" est executé !

mais il y un problem quelque part ! Mais je vois pas ou ! :-(
18 Janvier 2006 15:41:45

Enfaite c'est carément le "if...." qui est mal compris dans un "for" c'est à cause du "if" que tout bug et que le script ne s'execute pas coréctement!!

Mais dans ce cas moi je vois vraiment pas comment faire apars stocker tout les direction dans un fichier différent !! :-o
18 Janvier 2006 18:40:46

Bon enfaite le "bug" qui férmé le prog c'été une de mes commande qui n'était pas conforme :-D

Mais mon "if not" n'est toujours pas pris en compte !! Toute les commande sont executé quel ma variable soi égal ou non à l'autre variable !
a b L Programmation
18 Janvier 2006 19:38:49

les IF ne prennent pas les caractères génériques comme *.
Le '*' est le caractère '*' et pas "n'importe quel texte".
mais ton ton truc, ça ne serait pas plus simple d'utiliser la commande FIND sur ton fichier ?
en redirigeant la sortie dans un autre fichier et tu as la liste de tous les fichiers à déplacer.

pour tester le IF dans le FOR, teste IF "0"=="0" et IF "0"=="1". Si ça ça marche, le IF marche bien.
18 Janvier 2006 20:05:10

Quesque tu dis !! :-D

Bien sur que "if" reconnait le "*" ! Tien essaye pour voir :
  1. if exist *.txt echo ta vue qu'il reconnait
  2. echo t'avais raison !
  3. pause


Bien sur place toi dans un endroit ou i ly a des fichier ".txt" !! 8-)
a b L Programmation
18 Janvier 2006 20:35:11

oui mais non :-P

C'est le IF EXIST qui interprète les *, pas les IF simples:
  1. if "aaaa111"=="aaaa*" echo affiche ou affiche pas ?

19 Janvier 2006 20:15:32

ah !! (ne jamais contre dire le grand cricky !)

Bon ok .... ba dans ce cas je fais quoi moi ? .....

car : "C:\126\" n'est pas égal à "C:\126\fichier.txt" alors que justement moi j'ai besoin que ce soir egal !!

Mais bon sa c'est un exemple car je ne connais pas le ... "chemin" ...... :-?
19 Janvier 2006 20:23:00

A oui et tant que j'y suis : vous saurez pas comment prendre le nom de l'utilisateur en cour ...... c'est à dire le nom de l'utilisateur sous le quel le batch est executé ??

ps : ne me dite pas %userprofile%[/color] car sa me donne tout un chemin pas seulement le nom de l'utilisateur et je ne sais pas comment extraire que le nom dd'utilisateur du chemin donné
a b L Programmation
19 Janvier 2006 23:00:39

Et ce que je disais avec la commande FIND, tu ne peux pas t'en sortir ?
sinon prend le début de la variable.
si tu vex tester "toto*" avec le contenu d'une variable VAR, tu peux comparer:
IF "%VAR~0,4%"=="toto" echo Ok
ça découpe la variable VAR en commençant à l'index 0 et en prenant 4 caractères.
Donc si VAR=totozearzer, ben le test passera ;-)

Pour l'utilisateur, je dirai %username% (j'ai fait un simple SET pour avoir la liste de toutes les variables ;-) )
19 Janvier 2006 23:47:04

Aaaaa Magnifico !! respect total !! Je m'incline devant ta grandeur !

Encore une fois merci à toi Cricky !

Puis ba à bientot pour de nouvelles questions ....
:-D

Fausse joi !! je vien de m'appercevoir d'un truc : puisque je ne connais pas le chemin qui sera définit par l'utilisateur : il peu définir : "C:\Program Files\blablabla\blabla\123\" etc ...... donc je ne sais pas à combien caractère comparé

Car si je met par exemple 4 caractère il me les comparera : Alors il trouvera que c'est egal alors que sa se trouve le second chemin à comparer est : "C:\Program Files\blablabla\blabla\258\" qui n'est pas égal à "C:\Program Files\blablabla\blabla\123\"

En faite il faudrait trouver comment lui dire de comparer le chemin entrer par l'utilisateur avec le chemin avant le nom du fichier. exemple : C:\123\258.txt et C:\123\

mmmm tu vois ? :-D
a b L Programmation
19 Janvier 2006 23:52:12

lol, ne me prend pas pour un dieu, c'est juste l'expérience ;-)
D'autant que tu en connais autant que moi maintenant :-D
19 Janvier 2006 23:54:09

J'ai fé un edit de la réponse précedente ! regarde
21 Janvier 2006 13:09:02

Cricky ...... :-(
a b L Programmation
21 Janvier 2006 13:59:13

Ouais, ben ça je vois pas trop comment faire en batch.
Il faudrait analyser la chaine, avec un for /F en prenant comme token=/ pour découper en répertoire.
Mais là c'est pareil, il y a un problème sur le nombre de répertoire qui est variable.

Sinon sur chaque fichier, refaire un DIR dessus mais sans mettre l'option qui permet d'afficher tout le path, juste le nom, et là tu peux faire une comparaison sur le fichier. Mais bon, tu as le même problème si tu veux faire un filtre du type "debut*milieu*fin". Pour "debut*" et "*fin" pas de problème.
Je sais pas si ça t'aide, on sait jamais :-D
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS