Redirection dans un fichier .bat
gaspard_;0)
-
ksign -
ksign -
Bonjour,
j'ai besoin d'aide pour mettre au point un petit script sous environnement Windows.
en gros : je dois créer un nom de fichier à partir d'un autre en changeant l'extention
ex : fichier d'origine -> toto.txt
nouveau fichier -> toto.tra
pour ça j'ai déjà trouvé comment recuperer le nom du fichier sans l'extention, c'est assez barbare donc si vous avez mieux je suis preneur, j'utilise :
for /F "useback tokens=1 delims=. %a in ('toto.txt') do echo %a
et je recupère le tout dans un fichier en faisant :
for /F "useback tokens=1 delims=. %a in ('toto.txt') do echo %a > pouet.txt
Mon problème est le suivant : dans une fenêtre de commande tout marche bien mais si je met cette ligne de commande dans un fichier .bat alors là plus rien ne se passe. Encore plus étrange, j'ai voulu examiner la sortie d'erreur pour voir ce qui ne va pas, je fais donc :
erreur.txt <&2 for /F "useback tokens=1 delims=. %%a in ('toto.txt') do echo %%a > pouet.txt
et là, et seulement là, le script me créer un fichier pouet.txt, mais vide !
Je n'y comprend plus rien, entre une fenêtre de commandes et un fichier de script, une même commande ne donne pas le même resultat ! ( vous aurez quand même remarqué que j'ai bien rajouter des % en plus dans mon script, comme indiqué )
Voilà, je suis au bord du gouffre alors si une âme généreuse veux bien se donner la peine ! ;o)
merci beaucoup
(ps : ne croyez pas que je fais ça pour le plaisir, sinon en bash c'est reglé en 2 minutes mais là c'est pour le boulot et les restrictions sont assez sevères, Windows et rien d'autre ! )
j'ai besoin d'aide pour mettre au point un petit script sous environnement Windows.
en gros : je dois créer un nom de fichier à partir d'un autre en changeant l'extention
ex : fichier d'origine -> toto.txt
nouveau fichier -> toto.tra
pour ça j'ai déjà trouvé comment recuperer le nom du fichier sans l'extention, c'est assez barbare donc si vous avez mieux je suis preneur, j'utilise :
for /F "useback tokens=1 delims=. %a in ('toto.txt') do echo %a
et je recupère le tout dans un fichier en faisant :
for /F "useback tokens=1 delims=. %a in ('toto.txt') do echo %a > pouet.txt
Mon problème est le suivant : dans une fenêtre de commande tout marche bien mais si je met cette ligne de commande dans un fichier .bat alors là plus rien ne se passe. Encore plus étrange, j'ai voulu examiner la sortie d'erreur pour voir ce qui ne va pas, je fais donc :
erreur.txt <&2 for /F "useback tokens=1 delims=. %%a in ('toto.txt') do echo %%a > pouet.txt
et là, et seulement là, le script me créer un fichier pouet.txt, mais vide !
Je n'y comprend plus rien, entre une fenêtre de commandes et un fichier de script, une même commande ne donne pas le même resultat ! ( vous aurez quand même remarqué que j'ai bien rajouter des % en plus dans mon script, comme indiqué )
Voilà, je suis au bord du gouffre alors si une âme généreuse veux bien se donner la peine ! ;o)
merci beaucoup
(ps : ne croyez pas que je fais ça pour le plaisir, sinon en bash c'est reglé en 2 minutes mais là c'est pour le boulot et les restrictions sont assez sevères, Windows et rien d'autre ! )
Configuration: Linux Firefox 2.0.0.6
7 réponses
-
-
par ailleur, je ne comprend pas que cela fonctionne en utilisant 1 seul pourcentage.
voici une page avec des exemples:
https://www.dostips.com/DtTipsStringManipulation.php -
Essaye cmd /K "ta commande complete"
Le /K est pour que la fenetre reste ouverte apres l'execution et tu met /C a la place si tu veus qu'elle se ferme.
C'est peut-être le contraire , mais enfin c'est une des deux :D.
Tiens nous au courant. -
déjà merci pour vos propositions, je testerais ça demain matin et vous tiendrais au courant
ce que je constate en partant, c'est qu'il te manque les guillemets de fermeture du useback
oui, petite erreur de recopiage, le " est bien sur indispensable
par ailleur, je ne comprend pas que cela fonctionne en utilisant 1 seul pourcentage.
peut être, je ne suis pas du tout un spécialiste du batche mais dans l'aide en ligne de Microsoft il est clairement indiqué que dans une commande simple la syntaxe est : %maVariable et dans un script c'est : %%maVariable ( cf : reference de la commande FOR ), c'est tordu, soit, mais j'essaie dans un premier temps de suivre la doc !
A+ -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
bon, c'est reglé
je dois dire que la commande Cmd /K m'a bien aidé, merci à knasucre22 ;o)
en fait, dans mon fichier .bat je faisait d'abord un changement de repertoire, mon fichier était donc texto :
cd U:\monDossier
erreur.txt <&2 for /F "useback tokens=1 delims=. %%a in ('toto.txt') do echo %%a > pouet.txt
il suffisait de supprimer la ligne cd U:\monDossier et la commande :
for /F "useback tokens=1 delims=. %%a in ('toto.txt') do echo %%a > pouet.txt marche parfaitement
Mais en poursuivant j'ai trouvé mieux, pour recuperer le nom d'un fichier sans son extention il suffit de faire :
for %A in (*.txt) do echo %~nA > pouet.txt
...et le tour est joué ! -
Tu te loggin et tu post un nouveau message , en dessous du champ de texte tu as deus boutons radio, tu en coche un pour dire que la discussion est résolue et tu envoie. Heureux de t'avoir aider , bonne journée.
-
pas nécessaire d'être inscrit pour marquer une question comme résolue.
il suffit de retrouver le mail initial t'avisant que ta question avait bien été postée sur le forum.
dans ce mail tu peux choisir de marquer la question comme résolue.