Redirection dans un fichier .bat

gaspard_;0) -  
 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 ! )
Configuration: Linux
Firefox 2.0.0.6

7 réponses

  1. ksign
     
    ce que je constate en partant, c'est qu'il te manque les guillemets de fermeture du useback
    0
  2. knasucre22 Messages postés 104 Statut Membre 30
     
    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.
    0
  3. gaspard_;0) Messages postés 2 Statut Membre
     
    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+
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. gaspard_;0)
     
    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é !
    0
    1. gaspard_;0)
       
      encore moi : comment marque t'on la discussion comme resolue ?
      0
  6. knasucre22 Messages postés 104 Statut Membre 30
     
    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.
    0
  7. ksign
     
    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.
    0