Téléchargement
illégal
Posez votre question Signaler

Batch. rediriger cmd vers une variable [Résolu]

yusukessj 262Messages postés 27 mai 2008Date d'inscription 27 septembre 2011Dernière intervention - Dernière réponse le 23 oct. 2010 à 21:25
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.
Lire la suite 

Batch. rediriger cmd vers une variable »

Suggestions
17 réponses
Réponse
+2
moins plus
dans un .bat tu peux faire
awk -F"\\" "{print $8}" fichier.txt > fichier_sans_vide.txt 
set /p var=<fichier_sans_vide.txt 
Ajouter un commentaire
Réponse
+1
moins plus
utiliser printf $0 plutôt que print
Ajouter un commentaire
Réponse
+1
moins plus
essaye
awk "NF {sub(\"[ ]$\", \"\");printf $0}"

on remplace les espaces en fin de ligne par rien
Ajouter un commentaire
Réponse
+0
moins plus
hello
essayer sans espace après le =
set /p file=<C:\wamp\www\batch\fichier.txt  
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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/.....
...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
pas en DOS, il faut écrire dans un fichier et faire set /p var=<fichier
Ajouter un commentaire
Réponse
+0
moins plus
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 

?
Ajouter un commentaire
Réponse
+0
moins plus
non, pas en DOS
Ajouter un commentaire
Réponse
+0
moins plus
oui, je veut dire dans un fichier .bat
Est ce possible?
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
très bien,ca marche nikel
maintenant il me reste juste l'espace en dernier.
Ajouter un commentaire
Réponse
+0
moins plus
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 ;)
Ajouter un commentaire
Ce document intitulé « Batch. rediriger cmd vers une variable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?