Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1961 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [batch DOS] Parcourir un fichier et chaines vides

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[batch DOS] Parcourir un fichier et chaines vides

n°902463
Tetedeienc​h
Head Of God
Posté le 19-11-2004 à 08:24:19  profilanswer
 

J'ai un petit problème coté batch, et je suis pas très fort la dedans, donc au secours :(
 
J'ai un fichier de ce type 1 :
 
Nom1 Valeur1
Nom2 Valeur2
Nom3 Valeur3
...
 
Je dois faire un batch qui renvoie le premier nom trouvé sans valeur
 
Et la, au secours :( Je ne sais pas comment exprimer la chaine vide sous windows, et bon... comment renvoyer juste la première valeur ?
 
Je pensais faire un truc style :


for /f "tokens=1,2 delims= " %%A in ('type site1.txt') do "Si variable "nom_trouve" est pas vide alors si la valeur est vide alors assigner le nom à la variabe "nom_trouve"


 
Mais euh... autant le début ca va, autant savoir que %%A contient le nom et %%B la valeur ca va, autant exprimer le reste après le do... je sais pas. Comment on modélise la chaine vide dans ce cas ?
 
Si quelqu'un peut m'aider...
 
Merci !

mood
Publicité
Posté le 19-11-2004 à 08:24:19  profilanswer
 

n°902743
couak
Posté le 19-11-2004 à 12:44:36  profilanswer
 

si tu fais

FOR /F "tokens=1,2*" %%i in (liste.txt) do echo %%i %%j


tu vas lister les valeurs, par contre comme le délimitateurs est un espace, tu auras des pb avec les retours à la ligne
l'idéal serait de modifier dans ta liste les délimitateurs en les remplacant par des virgules par exemples
 
le shell dos ca pu

n°902746
couak
Posté le 19-11-2004 à 12:47:39  profilanswer
 

FOR/?

pour apprendre

n°902787
DOD_edge
Posté le 19-11-2004 à 14:08:27  profilanswer
 

sinon je te propose de tester ce petit code ca dervait t'aider  
@echo off
cls
 
for /f "tokens=1,2 delims= " %%A in (c:\site1.txt) do (
 
echo %%A%  
echo %%B% | FIND "echo"  
if errorlevel 1 goto suite
 
:suite  
set nom_trouve="%%a%"
 
 
 
)
 
 
 
pause

n°902857
Tetedeienc​h
Head Of God
Posté le 19-11-2004 à 15:32:22  profilanswer
 

couak a écrit :

si tu fais

FOR /F "tokens=1,2*" %%i in (liste.txt) do echo %%i %%j


tu vas lister les valeurs, par contre comme le délimitateurs est un espace, tu auras des pb avec les retours à la ligne
l'idéal serait de modifier dans ta liste les délimitateurs en les remplacant par des virgules par exemples
 
le shell dos ca pu


 
Mon problème se situe pas au niveau du for, mais au niveau de la détection des valeurs vides...
 
Je veux juste retourner le premier nom dont la valeur est vide :(
 

n°902872
couak
Posté le 19-11-2004 à 15:41:50  profilanswer
 

Tetedeiench a écrit :

Mon problème se situe pas au niveau du for, mais au niveau de la détection des valeurs vides...
 
Je veux juste retourner le premier nom dont la valeur est vide :(


tu peux tester une valeur vide en la comparant avec "" mais le problème avec le FOR c'est que le retour à la ligne, les espaces et les tab sont considérés comme les délimiteurs

n°902881
Tetedeienc​h
Head Of God
Posté le 19-11-2004 à 15:48:26  profilanswer
 

couak a écrit :

tu peux tester une valeur vide en la comparant avec "" mais le problème avec le FOR c'est que le retour à la ligne, les espaces et les tab sont considérés comme les délimiteurs


Je viens de réussir :) c'était tout bête... c'est un peu grâce à toi ;)
 
Le code en question :
 


for /f "tokens=1,2 delims=;" %%A in ('type site1.txt') do  if "%%B"=="" (
set libre=%%A
goto fin_boucle
)
 
:fin_boucle
echo libre=%libre%
 


 
Marche parfaitement. J'ai mis le ; comme delimiteur pour avoir un truc au format csv, mais globalement, c'était pas necessaire.
 
:hello:

n°902950
couak
Posté le 19-11-2004 à 16:45:11  profilanswer
 

Tetedeiench a écrit :

Je viens de réussir :) c'était tout bête... c'est un peu grâce à toi ;)
 
Le code en question :
 


for /f "tokens=1,2 delims=;" %%A in ('type site1.txt') do  if "%%B"=="" (
set libre=%%A
goto fin_boucle
)
 
:fin_boucle
echo libre=%libre%
 


 
Marche parfaitement. J'ai mis le ; comme delimiteur pour avoir un truc au format csv, mais globalement, c'était pas necessaire.
 
:hello:


c'était bien ce que je disais : il fallait un délimiteur différent de l'espace sinon c'était ca devenait un peu plus touchy
 
je le répète encore une fois : le dos shell ca pue


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [batch DOS] Parcourir un fichier et chaines vides

 

Sujets relatifs
Trier un tableau de fichierPeut-on utiliser les touches du clavier virtuel avec un batch ?
[C/UNIX] Systeme de fichierexecuter un fichier php dans du code PHP??
Échange de caractère dans un fichiersuppirmer un raccourci batch
<input type="file"> mais sans envoyer le fichier ... possible ?[Batch] commande pour afficher en plein écran
[java] telecharger n'importe qu'elle fichierCopie de fichiers en batch
Plus de sujets relatifs à : [batch DOS] Parcourir un fichier et chaines vides


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR