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 ! )
A voir également:
- Redirection dans un fichier .bat
- Creer un fichier .bat - Guide
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
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
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.
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
oui, petite erreur de recopiage, le " est bien sur indispensable
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+
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é !
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é !