Batch. rediriger cmd vers une variable

Résolu
yusukessj Messages postés 297 Statut Membre -  
yusukessj Messages postés 297 Statut Membre -
Bonjour,

j'ai un fichier qui contient le chemin absolut d'un autre fichier(chemin.txt).

C:\truc\truc\truc\truc\truc\truc\Aaaa.html.htm

je voudrais extraire juste le nom de mon fichier et le mettre dans une variable.
J'ai mis une commande awk qui m'extrait ce nom et le met dans un fichier(fichier.txt)

la voici et elle marche:

awk -F"\\" "{print $8}" C:\wamp\www\batch\chemin.txt > C:\wamp\www\batch\fichier.txt


Maintenant quand je veut récupéré le contenu de ce fichier et le mettre dans une variable ça ne marche pas. Pourriez vous m'aider sur ça SVP .
J'ai fait comme ça

set /p file= <C:\wamp\www\batch\fichier.txt  

echo %file% > C:\wamp\www\batch\verifier.t
xt

Quand j'ouvre verifier.txt, je trouve Commande ECHO activ'e.
Merci beaucoup.

17 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    dans un .bat tu peux faire
    awk -F"\\" "{print $8}" fichier.txt > fichier_sans_vide.txt 
    set /p var=<fichier_sans_vide.txt 
    2
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essaye
    awk "NF {sub(\"[ ]$\", \"\");printf $0}"

    on remplace les espaces en fin de ligne par rien
    2
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    essayer sans espace après le =
    set /p file=<C:\wamp\www\batch\fichier.txt  
    1
  4. yusukessj Messages postés 297 Statut Membre 16
     
    Merci beaucoup pour votre aide,
    Mais c'est la même chose, toujours uand je fait echo %variable% > fichier.txt ca me donne : Commande ECHO activ'e.

    mais ca je l'ai fait pour vérifier si vraiment je capte le nom de mon fichier dans une variable, tout celà pour un but précis.
    Mon but est de parcourir tout les fichier et de chercher ceux ui possède ce nom de fichier dans leur contenu html

    par exemple b.html contient le nom de A.html dans son code.
    B.html:
    <html> 
    ..... 
    ...... 
    <a href="a.html">dsddd</a> 
    ... 
    .....


    Pour celà, j'ai fait :

    rem    On affecte le nom de ce fichier dans une variable %file% 
    set /p file=<C:\wamp\www\batch\nom_fichier.txt 
    
    rem    Chercher dans les dossiers qui commencent par "contact_"  
    rem    ceux qui possedent le nom du fichier courrant qui est dans la variable %file% 
    
    for /F "delims=" %%c in ('dir /b/s *.htm ^| findstr  "\contact_"') do ( 
    rem    avoir toute la ligne 
    awk -F"[<>]"   "/%file%/{print $0}" "%%c" > C:\wamp\www\batch\ligne.txt  
    )


    Mais ligne affiche tout le contenu du fichier
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    vérifier le contenu de file avant la boucle for, ici avec des + pour repérer les espaces
    echo ++%file%++
    for /F "delims=" %%c in ('dir /b/.....
    ...
    
    1
  7. yusukessj Messages postés 297 Statut Membre 16
     
    Le problème est que le batch me renvois le contenu de mon fichier dans un fichier avec un espace en dernier, et un saut de ligne

    exemple:

    institut-national-du-travail-epic-gi.html.htm[espace]
    [saut de ligne]

    j'ai fait ceci pour enlever la ligne vide, mais sans succès:
    findstr /v "^$" nom_fichier.txt  >> f_sans_vides.txt
    1
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essaye avec awk
    awk "NF {print}" nom_fichier.txt  >> f_sans_vides.txt

    NF est le nombre de champs,donc 0 pour une ligne vide
    1
  9. yusukessj Messages postés 297 Statut Membre 16
     
    Vous savez la meilleur chose à faire,
    c'est est ce qu'on peut avoir le résultat d'une requête awk vers une variable directement, sans passer par un renvois vers un fichier et après collecté ce fichier vers une variable.
    1
  10. yusukessj Messages postés 297 Statut Membre 16
     
    la voici ma requète:

    awk -F"\\" "{print $8}" C:\wamp\www\batch\chemin_fichier_courant.txt > C:\wamp\www\batch\nom_fichier.txt

    Je voudrais la récupéré dans une variable en batch
    1
  11. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    pas en DOS, il faut écrire dans un fichier et faire set /p var=<fichier
    1
  12. yusukessj Messages postés 297 Statut Membre 16
     
    oui biensûr dans un fichier bat.
    Mais on peut pas faire un truc du genre
    set /p var = awk -F"\\" "{print $8}" fichier.txt > fichier_sans_vide.txt 

    ?
    1
  13. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    non, pas en DOS
    1
  14. yusukessj Messages postés 297 Statut Membre 16
     
    oui, je veut dire dans un fichier .bat
    Est ce possible?
    1
  15. yusukessj Messages postés 297 Statut Membre 16
     
    Ah je vois.
    Lorsque je renvois vers un fichier, awk met un espace en dernier, et un saut de ligne

    exemple:

    file.html.htm[espace]
    [saut de ligne]

    pour celà, j'ai fait votre requete pour enlever tout ca:

    awk "NF {print}" nom_fichier.txt  >> f_sans_vides.txt


    Mais l'espace reste et la dernière ligne reste aussi.
    1
  16. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    utiliser printf $0 plutôt que print
    1
  17. yusukessj Messages postés 297 Statut Membre 16
     
    très bien,ca marche nikel
    maintenant il me reste juste l'espace en dernier.
    1
  18. yusukessj Messages postés 297 Statut Membre 16
     
    Merci beaucoup dubcek, ca marche !!!!!
    j'ai enlever tout les truc, et j'ai pus le mettre dans une variable, et j'ai exploité cette variable...
    Merci infiniment, Vous me sauvez encore ;)
    1