Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
[Résolu]--[BATCH] Problème for/f
Auteur Message
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Bonjour,

Je rencontre un soucis dans mon script BATCH.
j'ai un ficher texte temp.txt contenant:

mots.grxml ville.grxml


et je cherche à l'aide de ma boucle for à faire afficher mots.grxml et ville.grxml

for /f "delims= " %%b in ('type D:\temp.txt') do (
echo %%b
)



Hors seul mots.grxml est affiché et non mots.grxml et ville.grxml comme je le souhaite.

Je pense que l'erreur est toute bête mais je ne la trouve pas... :s


Une petite aide serait la bienvenue =)



Dernière édition par JohnCitron le Mer 9 Fév 2011 - 10:36; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Bonjour

code vérifié xp pro

Code:

@echo off
set fichier=temp.txt
for /f "tokens=1,2 delims= " %%a in ('type "%fichier%"') do (
set mot=%%a
set ville=%%b
)
echo %mot%
echo %ville%
pause
@exit


Si le sujet est résolu, merci d'éditer votre premier message et d'ajouter le mot [Résolu] dans la barre de titre.

Bonne journée

LADDY




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Code:
for /f "tokens=1,2 delims= " %%a in ('type "%fichier%"') do (
set mot=%%a
set ville=%%b
)


à vrai dire je ne comprend pas bien d'où vient le %%b?



Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Bonjour
un peu de lecture serait peut être indispensable pour comprendre : http://batch.xoo.it/t1517-LA-BOUCLE-FOR.htm

tu souhaites deux mots, le tokens=1,2 correspond :

1 -> au premier mot --> %%a
2 -> au second mot --> %%b




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Mon premier post était un peu concis je pense :s

en fait dans ce fichier temp.txt on peut avoir:

mots.grxml ville.grxml

... comme on pourrait avoir:

mots.grxml ville.grxml mouton.grxml cadiac.grxml etc...

c'est à dire un nombre indéfini de xxx.grxml à afficher.


des suggestions?

plutôt que me donner des solutions qui fonctionnent, pourquoi ne pas commencer par m'expliquer pourquoi la mienne ne fonctionne pas?



Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
La boucle est basée sur une sélection de champs (tokens) tu me donnes une liste avec deux noms je te donne un code qui te donne ces deux champs délimité par un espace.

pour les explications sur les tokens, il y a le lien donnée pour t expliquer et le tutoriel d'astase ainsi qu'une recherche sur le forum dans la section formation pour comprendre le tolkens.

maintenant tu ne pourras pas afficher chaque champ surtout si ils sont tous sur la même ligne sans savoir combien il y en a.

Si tu as x champs tu ne pourras aller que jusque 9.


Code:
for /f "tokens=1,2,3,4,5,6,7,8,9 delims= " %%a in ('type "%fichier%"') do (
echo %%a
echo %%b
echo %%c
echo %%d
echo %%e
echo %%f
echo %%g
echo %%g
echo %%h
)



il te faudra avoir recours à autre chose, avec la commande find dans une boucle for pour x champs demandés.

en ayant plus de précision sur ce que tu souhaites faire en juste çA nous donnerait une idée.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Citation:
pour les explications sur les tokens, il y a le lien donnée pour t expliquer et le tutoriel d'astase ainsi qu'une recherche sur le forum dans la section formation pour comprendre le tolkens.


J'ai au préalable, avant de poster sur ce forum effectué des recherches pour résoudre mon problème. Cependant, mes recherches ne se sont pas portées sur le tokens (car il ne semblait pas utile à mes yeux) mais sur le delims.
J'étais parti dans l'optique où le for combiné au delims me donnerait TOUTES les occurrences délimitées par un espace. A l'évidence non...

Citation:
maintenant tu ne pourras pas afficher chaque champ surtout s'ils sont tous sur la même ligne sans savoir combien il y en a.



Il m'est possible de savoir combien de champs il y aura à afficher lors de l'exécution du script (indication par l'utilisateur).
Mais celà résoudrait-il le problème?



Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Ok avec des explications je comprends mieux.

ça aurait été le cas pour uniquement le delims si tu avais tes indications dans ton fichier les uns en dessous des autres.

Exemple :

Code:
mots.grxml
ville.grxm
mouton.grxml
cadiac.grxml


Dans ce cas, ton code aurait fonctionné

Code:
@echo off
for /f "delims= " %%a in ('type temp.txt') do (
echo %%a
)
pause
@exit

Fais le test pour comprendre.

Sur la même ligne ce n'est pas la même chose, il faut dispatcher, donc le tolkens est important, ainsi que le delims.

Pour solutionner ce problème , tu as différentes possibilités.

1. définir ton fichier temp.txt avec les informations les unes en dessous des autres
2. Créer un dictionnaire des possibilités de temp.txt afin d'effectuer une recherche ensuite en fonction de l'utilisateur.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
erf me voilà bien embêté... :s

Je vais tenter de construire mon fichier temp.txt autrement...

Sinon le but de mon script batch est de reconstruire un script ftp en fonction des fichiers à déposer sur le serveur indiqués par l'utilisateur (dans le fichier temp.txt)

j'ai donc tenté de passer en paramètre le nom du fichier à déposer sur le serveur lors de l'appel du script ftp en le récupérant via %1 comme dans un script batch (j'ai lu que c'était possible?) mais sans grand succès, c'est pourquoi j'ai tenté de construire un nouveau script ftp lors de chaque passage dans la boucle (donc avec un nom de fichier à déposer sur le serveur différent à chaque fois).

ça donne à peu près ça:

Script batch:

Code:
for /f "delims= " %%b in ('type D:\temp.txt') do (
ftp -s:ftpscript.txt %%b
)


Script ftp:

Code:
open machine
user
password
cd tests
put D:\%1
dir
bye


le %1 dans le script ftp n'est pas reconnu... :s



Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Je ne comprend pas vraiement ton batch

tu as lu ceci ?
http://batch.xoo.it/t1319-Uploader-un-ou-plusieurs-fichiers-via-ftp.htm

tu le sors d'ou ton %1 ??? ça peut fonctionner sans doute en glissant les fichiers sur ton batch ..

de plus tu veux envoyer des noms de fichiers ??? il faut des fichiers concrêts.


EDIT :

Code:

set chemin=D:\
for /f "delims= " %%b in ('type D:\temp.txt') do (
ECHO PUT %chemin%\%%b >>ftpscript.txt
)
ftp -s:ftpscript.txt





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Citation:
Si tu as x champs tu ne pourras aller que jusque 9.


Pas si on switch?


Citation:
tu le sors d'ou ton %1 ??? ça peut fonctionner sans doute en glissant les fichiers sur ton batch ..


http://www.dostips.com/DtTipsFtpBatchScript.php

J'ai cru comprendre sur le site cité ci-dessus que cette manipulation était possible (cf le cinquième exemple).

Citation:
de plus tu veux envoyer des noms de fichiers ??? il faut des fichiers concrêts.


Je cherche bien évidemment à déposer sur le serveur des fichiers concrets. Mais les noms de ces fichiers à déposer sur le serveur sont indiqués par l'utilisateur au préalable est stockés dans une seule variable (set /p).

Citation:
tu as lu ceci ?
http://batch.xoo.it/t1319-Uploader-un-ou-plusieurs-fichiers-via-ftp.htm


Etant parti sur l'idée de dupliquer mon script ftp, je n'ai pas pensé à chercher directement ceci sur le forum.
solution testée et adoptée! =)


Maintenant il me reste le soucis de récupérer les noms de fichiers indiqués par l'utilisateur...
Je vais tenter de créer mon fichier temp.txt autrement.

J'édite le fichier comme [Résolu].

Merci de votre aide Laddy.

(ceci dit si vous avez d'autres idées concernant mon autre problème, ou une solution pour construire mon fichier temp.txt (actuellement je ne fais qu'écrire la variable saisie par l'utilisateur dans le fichier temp.txt) différement, je vous invite à venir poster ici)



Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Pour t'aider à solutionner ton problème, il me faut tout ton code, hormis stocker les informations les unes en dessous des autres pour ton fichier temp.txt je ne vois que cette solution.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
J'ai changé ma manière de procéder, je fais maintenant saisir l'utilisateur fichier par fichier.



Code:


:addfic
set /p fic=Saisissez le nom du fichier que vous souhaitez envoyer (terminez par fin):
if %fic%==fin (
goto eof
)
>>upload.ftp ECHO user
>>upload.ftp ECHO pass
>>upload.ftp ECHO cd tests
>>upload.ftp ECHO put D:\chemin\%fic%
>>upload.ftp echo bye
FTP -s:upload.ftp nom-machine
Del  /Q upload.ftp

goto addfic

:eof
pause




merci de votre aide

PS: juste une petite interrogation, sur quoi vous basez-vous pour définir le rang des posteurs? (batcheur avancé etc...)



Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Re,
je ne sais pas si c'est la meilleure méthode, imaginer de faire taper 100 fichiers à uploader.

pour les rangs nombres de messages.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]--[BATCH] Problème for/f 
Citation:
pour les rangs nombres de messages.


ok je me disais bien que ça ne reflétait en rien mon niveau en batch ^^'



Citation:
je ne sais pas si c'est la meilleure méthode, imaginer de faire taper 100 fichiers à uploader.



Ce n'est certainement pas la meilleur méthode, mais dans tous les cas, c'est à l'utilisateur de saisir le nom des fichiers à déposer sur le serveur. Bien heureusement, une fois mon programme principal déposé en production (oui, doutez-vous bien que ce n'est qu'une infime partie de mon projet), les utilisateurs n'auront tout au plus (qu'une?) douzaine de fichiers à envoyer.

Je suis cependant preneur de toute autre solution qui pourrait améliorer l'utilisation de mon script.



Message [Résolu]--[BATCH] Problème for/f 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch