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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Résolu] - help FOR tokens=1,2* et le caractére *

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] - help FOR tokens=1,2* et le caractére *

n°1423096
webding
Posté le 09-08-2006 à 17:24:13  profilanswer
 

Bonjour j'ai besoin d'un petit conseil sur un boucle FOR, c'est à propos du caractère joker * et tokens=1,2*, dans l'aide en ligne de commande pour FOR il est dit que le caractère * pertmet de récupérer tout ce qui se trouve derrière la partie tu texte à récupérer pour le corp de la boucle référencer par le numéro 2 par exemple, mais dans ma boucle que je poste ci-dessous ca ne marche pas:  
 

Code :
  1. for /f "tokens=1,2* delims= " %%i in ('du ') do if %%i equ 0 echo %%i %%j

 
 
Y-a-t-il un forumeur ici qui puisse m'aider ?


Message édité par webding le 10-08-2006 à 17:43:55
mood
Publicité
Posté le 09-08-2006 à 17:24:13  profilanswer
 

n°1423248
wackevat
Posté le 09-08-2006 à 21:37:03  profilanswer
 

Normal si les colonnes sont séparées par les tabulations et que tu définis delims=<espace>.

n°1423252
webding
Posté le 09-08-2006 à 21:42:19  profilanswer
 

Oui mais la caractére * n'est pas forcer 2 à afficher tous ce qu'il reste ?

n°1423266
wackevat
Posté le 09-08-2006 à 21:59:10  profilanswer
 

C'est quoi la sortie de du et celle de ta boucle ?

n°1423271
webding
Posté le 09-08-2006 à 22:03:42  profilanswer
 

du affiche les poid des répertoires, comme ceci:
 

Citation :

45 C:\chemin\du\répertoire


http://pic.aceboard.net/img/5476/8954/1155154118.jpg
 
tokens=1 récupére le poids, et tokens=2 récupére le chemin
 
 
Je ne peux utiliser que espace comme délimitateur, et si les chamins contiennent des espaces, tout se qui a derière le dernier espace n'est pas afficher.

Message cité 1 fois
Message édité par webding le 09-08-2006 à 22:08:37
n°1423475
wackevat
Posté le 10-08-2006 à 10:50:45  profilanswer
 

J'attendais plutôt à une analyse perso de ta part de la sortie qu'une capture d'écran :D.
 

webding a écrit :

tokens=1 récupére le poids, et tokens=2 récupére le chemin


--> uniquement si les colonnes sont séparées par un ou des espaces (cf. mon premier message), sinon, la condition %%i equ 0 ne va s'appliquer à aucune ligne.
 
Quelle est ta version de du ?
 
Déjà, si tu remplaces la commande à l'intérieur de for :
if %%i equ 0 echo %%i %%j
par
echo i="%%i"; j="%%j"
est-ce que tu obtiens les bonnes valeurs de i ?

n°1423809
webding
Posté le 10-08-2006 à 16:11:16  profilanswer
 

Voilà la résultat sii je remplace ce que tu m'a dis:
 
http://pic.aceboard.net/img/5476/8954/1155219064.jpg

n°1423904
maciew
Posté le 10-08-2006 à 17:26:24  profilanswer
 

for /f "tokens=1,* delims= " %%i in (toto.txt) do echo %%i %%j


Message édité par maciew le 10-08-2006 à 17:27:00
n°1423920
webding
Posté le 10-08-2006 à 17:43:28  profilanswer
 

Ah, ok, merci beaucoup  :)  
 
 
Donc le caractére * prend une nouvelle lettre, c'est ce que je n'avait pas compris.


Message édité par webding le 10-08-2006 à 17:43:36
n°1855450
Garminator
Posté le 26-02-2009 à 11:32:27  profilanswer
 

Je doit intergré une variable dans l'execution d'une commande bat.
La commande doit contenir la reference de la valeur installdir d'une application installez dans le systeme.
Quand l'adresse du dossier dans la valeur est d'une traite sans éspace, ça fonctionne, mais dans le cas que ce même programme est installez dans "Program Files", ça ne marche plus.
 
 
setlocal enabledelayedexpansion
 
set TESTK=HKLM\Software\Garmin\WebUpdater
set TESTV=InstallDir
call :reg_read "%TESTK%" "%TESTV%" || (echo ERROR: no value found for InstallDir & exit /b 1)
 
exit /b 0
 
:reg_read <key> <value>
setlocal
 
set key=%~1
set value=%~2
 
REM // make one call to reg to make sure the KEY/VALUE exists before reading it
reg query "%key%" /v "%value%" 1>nul 2>&1 || (exit /b 1)
 
for /f "tokens=2,*" %%a in ('reg query "%key%" /v "%value%" ^| findstr /c:"%value%"') do (set data=%%b)
 
if {%data%}=={} (endlocal & exit /b 1)
 
endlocal & set RETURN=%data%
 
echo %RETURN%
 
 
REM This is installed in C:\Garmin\WebUpdater\Webupdater.exe
REM Or could also be installed in C:\Garmin\WebUpdater.exe
REM This works great
 
REM The same issue applies with MapSource:
REM It can be in C:\Garmin and in C:\Garmin\Program Files\
 
REM So I've tried differnt things on my own but it didn't workout:
 
@echo off
 
setlocal EnableDelayedExpansion
 
REM MapSource InstallDir Finder
REM ---------------------------------------
 
set TESTA=HKLM\Software\Garmin\MapSource\Products
set TESTB=InstallDir
call :reg_read "%TESTA%" "%TESTB%" || (echo ERROR: no value found for InstallDir & exit /b 1)
 
exit /b 0
 
:reg_read <key> <value>
setlocal
 
set key=%~1
set value=%~2
 
reg query "%key%" /v "%value%" 1>nul 2>&1 || (exit /b 1)
 
for /f "tokens=2,* delims= " %%a in ('reg query "%key%" /v "%value%" ^| findstr /c:"%value%"') do (set data=%%b)
 
if {%data%}=={} (endlocal & exit /b 1)
 
endlocal & set Mapsource=%data%
 
echo %MapSource%
 
REM I already got echo result: Files\Garmin\ unattend error
REM I already got echo result: C:\Program unattend error
REM This results by changing values in token and delims, but never found the right way.


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

  [Résolu] - help FOR tokens=1,2* et le caractére *

 

Sujets relatifs
[résolu]Comment passer plusieurs arg. à Property Let[VBA-E] [Résolu] Copier une valeur provenant d'un autre classeur
[Résolu] [Algo] Stabilisation et Système du premier ordreMax caractère
MsgBox[resolu][RESOLU AVEC HONTE] Pb avec un upload de fichier un peu étrange :)
[ASP] chaine de caractere[Résolu] Lire les 10 dernières lignes d'un fichier
[ Résolu ] Lancer un fichier BAT depuis Csharp[Résolu] Aide pour une requete
Plus de sujets relatifs à : [Résolu] - help FOR tokens=1,2* et le caractére *


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