[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte
[02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte
XXX
XXX
[45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte
XXX
XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se
trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Pour effectuer la recherche ident3 ne change jamais de position et se
trouve avant le " mais ne situe pas toujours sur la même ligne du
fichier texte...
A dire simple, mais à faire c'est une autre histoire...
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques Barathon [MS]
"François" wrote in message news:
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte [02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte XXX XXX [45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte XXX XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Pour effectuer la recherche ident3 ne change jamais de position et se trouve avant le " mais ne situe pas toujours sur la même ligne du fichier texte...
Version simple, si le fait de récupérer les guillemets avec la valeur ne te dérange pas:
for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%r
J'ai écrit %%r en pensant que tu aurais besoin de cette ligne dans un batch. Si tu veux tester en ligne de commande, contente-toi d'écrire %r.
Mes éminents confrères, bien plus érudits en langage batch, auront tôt fait de préciser comment passer le guillemet comme délimiteur. Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. :-)
Jacques
"François" <Francois.lesourdi@free.fr> wrote in message
news:OexAae5bHHA.3408@TK2MSFTNGP03.phx.gbl...
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte
[02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte
XXX
XXX
[45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte
XXX
XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se
trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Pour effectuer la recherche ident3 ne change jamais de position et se
trouve avant le " mais ne situe pas toujours sur la même ligne du fichier
texte...
Version simple, si le fait de récupérer les guillemets avec la valeur ne te
dérange pas:
for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set
resultat=%%r
J'ai écrit %%r en pensant que tu aurais besoin de cette ligne dans un batch.
Si tu veux tester en ligne de commande, contente-toi d'écrire %r.
Mes éminents confrères, bien plus érudits en langage batch, auront tôt fait
de préciser comment passer le guillemet comme délimiteur. Dans ce cas-là, il
faudra accéder au 2e token et le tour sera joué. :-)
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte [02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte XXX XXX [45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte XXX XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Pour effectuer la recherche ident3 ne change jamais de position et se trouve avant le " mais ne situe pas toujours sur la même ligne du fichier texte...
Version simple, si le fait de récupérer les guillemets avec la valeur ne te dérange pas:
for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%r
J'ai écrit %%r en pensant que tu aurais besoin de cette ligne dans un batch. Si tu veux tester en ligne de commande, contente-toi d'écrire %r.
Mes éminents confrères, bien plus érudits en langage batch, auront tôt fait de préciser comment passer le guillemet comme délimiteur. Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. :-)
Jacques
Jacques Barathon [MS]
"Jacques Barathon [MS]" wrote in message news:
"François" wrote in message news:
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte [02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte XXX XXX [45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte XXX XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Evidemment, je ne résiste pas au plaisir de présenter deux versions PowerShell:
$resultat = type fichier.txt | where {$_ -match "(ident3)"} | foreach {$_.split('"')[1]} $resultat = (select-string "(ident3)" fichier.txt -list).line.split('"')[1]
Jacques
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> wrote in message
news:urIXVB6bHHA.3616@TK2MSFTNGP05.phx.gbl...
"François" <Francois.lesourdi@free.fr> wrote in message
news:OexAae5bHHA.3408@TK2MSFTNGP03.phx.gbl...
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier
texte
[02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier
texte
XXX
XXX
[45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte
XXX
XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se
trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Evidemment, je ne résiste pas au plaisir de présenter deux versions
PowerShell:
$resultat = type fichier.txt | where {$_ -match "(ident3)"} | foreach
{$_.split('"')[1]}
$resultat = (select-string "(ident3)" fichier.txt -list).line.split('"')[1]
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte [02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte XXX XXX [45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte XXX XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Evidemment, je ne résiste pas au plaisir de présenter deux versions PowerShell:
$resultat = type fichier.txt | where {$_ -match "(ident3)"} | foreach {$_.split('"')[1]} $resultat = (select-string "(ident3)" fichier.txt -list).line.split('"')[1]
Jacques
François
Merci Jacques pour ces deux réponses et cette rapidité ;-). Je suis en train de tester la première.... Ce script sera à intégrer dans un script du dossier Netlogon pour plusieurs dizaines d'utilisateurs et sera donc exécuté au moment du login. Il me semble que même si je mets Powershell sur le serveur, les utilisateurs au moment d'exécuter le script auront qq difficultés... Donc à part le bon vieux Dos et wsh (et kixtart que j'utilise), point de salut. Mais je me trompe peut-être. Si tu as une soluce pour lancer un script Powershell à partir d'une station de travail ne l'ayant pas.... Je suis preneur! Sinon cela m'obligerait à le déployer sur l'ensemble des stations de travail pour utiliser ton 2ème script.
François
"Jacques Barathon [MS]" wrote in message news:
"François" wrote in message news:
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte [02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte XXX XXX [45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte XXX XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Evidemment, je ne résiste pas au plaisir de présenter deux versions PowerShell:
$resultat = type fichier.txt | where {$_ -match "(ident3)"} | foreach {$_.split('"')[1]} $resultat = (select-string "(ident3)" fichier.txt -list).line.split('"')[1]
Jacques
Merci Jacques pour ces deux réponses et cette rapidité ;-). Je suis en
train de tester la première....
Ce script sera à intégrer dans un script du dossier Netlogon pour
plusieurs dizaines d'utilisateurs et sera donc exécuté au moment du login.
Il me semble que même si je mets Powershell sur le serveur, les
utilisateurs au moment d'exécuter le script auront qq difficultés...
Donc à part le bon vieux Dos et wsh (et kixtart que j'utilise), point de
salut.
Mais je me trompe peut-être. Si tu as une soluce pour lancer un script
Powershell à partir d'une station de travail ne l'ayant pas.... Je suis
preneur! Sinon cela m'obligerait à le déployer sur l'ensemble des
stations de travail pour utiliser ton 2ème script.
François
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> wrote in message
news:urIXVB6bHHA.3616@TK2MSFTNGP05.phx.gbl...
"François" <Francois.lesourdi@free.fr> wrote in message
news:OexAae5bHHA.3408@TK2MSFTNGP03.phx.gbl...
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier
texte
[02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier
texte
XXX
XXX
[45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte
XXX
XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se
trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Evidemment, je ne résiste pas au plaisir de présenter deux versions
PowerShell:
$resultat = type fichier.txt | where {$_ -match "(ident3)"} | foreach
{$_.split('"')[1]}
$resultat = (select-string "(ident3)" fichier.txt -list).line.split('"')[1]
Merci Jacques pour ces deux réponses et cette rapidité ;-). Je suis en train de tester la première.... Ce script sera à intégrer dans un script du dossier Netlogon pour plusieurs dizaines d'utilisateurs et sera donc exécuté au moment du login. Il me semble que même si je mets Powershell sur le serveur, les utilisateurs au moment d'exécuter le script auront qq difficultés... Donc à part le bon vieux Dos et wsh (et kixtart que j'utilise), point de salut. Mais je me trompe peut-être. Si tu as une soluce pour lancer un script Powershell à partir d'une station de travail ne l'ayant pas.... Je suis preneur! Sinon cela m'obligerait à le déployer sur l'ensemble des stations de travail pour utiliser ton 2ème script.
François
"Jacques Barathon [MS]" wrote in message news:
"François" wrote in message news:
Bonjour,
A partir de cet exemple :
Fichier.txt :
[01] Ceci est le (ident1)"resultat1" de la première ligne du fichier texte [02] Ceci est le (ident2)"resultat2" de la deuxième ligne du fichier texte XXX XXX [45] Ceci est le (ident3)"resultat3" de la nième ligne du fichier texte XXX XXX
Je souhaiterais récupérer le texte entre guillemets de la ligne ou se trouve (ident3) cad resultat3 et l'appliquer à une variable DOS.
Evidemment, je ne résiste pas au plaisir de présenter deux versions PowerShell:
$resultat = type fichier.txt | where {$_ -match "(ident3)"} | foreach {$_.split('"')[1]} $resultat = (select-string "(ident3)" fichier.txt -list).line.split('"')[1]
Jacques
Gilles LAURENT
"Jacques Barathon [MS]" a écrit dans le message de news: | Mes éminents confrères, bien plus érudits en langage batch, auront | tôt fait de préciser comment passer le guillemet comme délimiteur. | Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. | :-) | | Jacques
:-)
Sans les guillemets (une seule ligne): for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%~r
-- Gilles LAURENT http://glsft.free.fr
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news:urIXVB6bHHA.3616@TK2MSFTNGP05.phx.gbl
| Mes éminents confrères, bien plus érudits en langage batch, auront
| tôt fait de préciser comment passer le guillemet comme délimiteur.
| Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué.
| :-)
|
| Jacques
:-)
Sans les guillemets (une seule ligne):
for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do
set resultat=%%~r
"Jacques Barathon [MS]" a écrit dans le message de news: | Mes éminents confrères, bien plus érudits en langage batch, auront | tôt fait de préciser comment passer le guillemet comme délimiteur. | Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. | :-) | | Jacques
:-)
Sans les guillemets (une seule ligne): for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%~r
-- Gilles LAURENT http://glsft.free.fr
Jacques Barathon [MS]
"Gilles LAURENT" wrote in message news:%
"Jacques Barathon [MS]" a écrit dans le message de news: | Mes éminents confrères, bien plus érudits en langage batch, auront | tôt fait de préciser comment passer le guillemet comme délimiteur. | Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. | :-) | | Jacques
:-)
Sans les guillemets (une seule ligne): for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%~r
Bien vu Gilles, j'avais également pensé à jouer d'une forme d'expansion mais en cherchant sommairement je n'ai rien trouvé de convenable.
Concernant la tactique qui consisterait à utiliser les guillemets comme délimiteurs, aurais-tu la solution? Je n'ai rien trouvé non plus à ce sujet, à part une référence disant que tous les caractères sont acceptés. Mais si j'écris "delims="" ou même "delims=^"" j'ai une erreur de syntaxe.
Jacques
"Gilles LAURENT" <glsft@free.fr> wrote in message
news:%23wQzC66bHHA.4632@TK2MSFTNGP03.phx.gbl...
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news:urIXVB6bHHA.3616@TK2MSFTNGP05.phx.gbl
| Mes éminents confrères, bien plus érudits en langage batch, auront
| tôt fait de préciser comment passer le guillemet comme délimiteur.
| Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué.
| :-)
|
| Jacques
:-)
Sans les guillemets (une seule ligne):
for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do
set resultat=%%~r
Bien vu Gilles, j'avais également pensé à jouer d'une forme d'expansion mais
en cherchant sommairement je n'ai rien trouvé de convenable.
Concernant la tactique qui consisterait à utiliser les guillemets comme
délimiteurs, aurais-tu la solution? Je n'ai rien trouvé non plus à ce sujet,
à part une référence disant que tous les caractères sont acceptés. Mais si
j'écris "delims="" ou même "delims=^"" j'ai une erreur de syntaxe.
"Jacques Barathon [MS]" a écrit dans le message de news: | Mes éminents confrères, bien plus érudits en langage batch, auront | tôt fait de préciser comment passer le guillemet comme délimiteur. | Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. | :-) | | Jacques
:-)
Sans les guillemets (une seule ligne): for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%~r
Bien vu Gilles, j'avais également pensé à jouer d'une forme d'expansion mais en cherchant sommairement je n'ai rien trouvé de convenable.
Concernant la tactique qui consisterait à utiliser les guillemets comme délimiteurs, aurais-tu la solution? Je n'ai rien trouvé non plus à ce sujet, à part une référence disant que tous les caractères sont acceptés. Mais si j'écris "delims="" ou même "delims=^"" j'ai une erreur de syntaxe.
Jacques
Jacques Barathon [MS]
"François" wrote in message news:
Merci Jacques pour ces deux réponses et cette rapidité ;-). Je suis en train de tester la première.... Ce script sera à intégrer dans un script du dossier Netlogon pour plusieurs dizaines d'utilisateurs et sera donc exécuté au moment du login. Il me semble que même si je mets Powershell sur le serveur, les utilisateurs au moment d'exécuter le script auront qq difficultés... Donc à part le bon vieux Dos et wsh (et kixtart que j'utilise), point de salut. Mais je me trompe peut-être. Si tu as une soluce pour lancer un script Powershell à partir d'une station de travail ne l'ayant pas.... Je suis preneur! Sinon cela m'obligerait à le déployer sur l'ensemble des stations de travail pour utiliser ton 2ème script.
Tu ne te trompes pas. Il faut avoir installé PowerShell sur un poste pour pouvoir l'utiliser. Donc, à moins que tu aies d'autres besoins d'exécution de scripts sur les postes clients qui justifierait une installation généralisée de PowerShell, les outils fournis en standard resteront tes armes de choix. :-)
Jacques
"François" <Francois.lesourdi@free.fr> wrote in message
news:uzvrgm6bHHA.2552@TK2MSFTNGP06.phx.gbl...
Merci Jacques pour ces deux réponses et cette rapidité ;-). Je suis en
train de tester la première....
Ce script sera à intégrer dans un script du dossier Netlogon pour
plusieurs dizaines d'utilisateurs et sera donc exécuté au moment du login.
Il me semble que même si je mets Powershell sur le serveur, les
utilisateurs au moment d'exécuter le script auront qq difficultés...
Donc à part le bon vieux Dos et wsh (et kixtart que j'utilise), point de
salut.
Mais je me trompe peut-être. Si tu as une soluce pour lancer un script
Powershell à partir d'une station de travail ne l'ayant pas.... Je suis
preneur! Sinon cela m'obligerait à le déployer sur l'ensemble des stations
de travail pour utiliser ton 2ème script.
Tu ne te trompes pas. Il faut avoir installé PowerShell sur un poste pour
pouvoir l'utiliser. Donc, à moins que tu aies d'autres besoins d'exécution
de scripts sur les postes clients qui justifierait une installation
généralisée de PowerShell, les outils fournis en standard resteront tes
armes de choix. :-)
Merci Jacques pour ces deux réponses et cette rapidité ;-). Je suis en train de tester la première.... Ce script sera à intégrer dans un script du dossier Netlogon pour plusieurs dizaines d'utilisateurs et sera donc exécuté au moment du login. Il me semble que même si je mets Powershell sur le serveur, les utilisateurs au moment d'exécuter le script auront qq difficultés... Donc à part le bon vieux Dos et wsh (et kixtart que j'utilise), point de salut. Mais je me trompe peut-être. Si tu as une soluce pour lancer un script Powershell à partir d'une station de travail ne l'ayant pas.... Je suis preneur! Sinon cela m'obligerait à le déployer sur l'ensemble des stations de travail pour utiliser ton 2ème script.
Tu ne te trompes pas. Il faut avoir installé PowerShell sur un poste pour pouvoir l'utiliser. Donc, à moins que tu aies d'autres besoins d'exécution de scripts sur les postes clients qui justifierait une installation généralisée de PowerShell, les outils fournis en standard resteront tes armes de choix. :-)
Jacques
Gilles LAURENT
"Jacques Barathon [MS]" a écrit dans le message de news: | "Gilles LAURENT" wrote in message | news:% || "Jacques Barathon [MS]" a écrit dans || le message de news: ||| Mes éminents confrères, bien plus érudits en langage batch, auront ||| tôt fait de préciser comment passer le guillemet comme délimiteur. ||| Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. ||| :-) ||| ||| Jacques || || :-) || || Sans les guillemets (une seule ligne): || for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" || fichier.txt') do set resultat=%%~r | | Bien vu Gilles, j'avais également pensé à jouer d'une forme | d'expansion mais en cherchant sommairement je n'ai rien trouvé de | convenable. | | Concernant la tactique qui consisterait à utiliser les guillemets | comme délimiteurs, aurais-tu la solution? Je n'ai rien trouvé non | plus à ce sujet, à part une référence disant que tous les caractères | sont acceptés. Mais si j'écris "delims="" ou même "delims=^"" j'ai | une erreur de syntaxe. | | Jacques
Le guillemet n'est pas supporté en tant que délimiteur car il entre en conflit avec la syntaxe utilisée pour définir les options du for /f. Il est donc nécessaire de décomposer pour pouvoir s'en sortir :
:: extraction de la ligne for /f "tokens=*" %%r in ('findstr "t3)" fichier.txt') do set s=%%r :: substitution des guillemets par des quotes (ou autre caractère) set s=%s:"='% :: split for /f "tokens=2 delims='" %%r in ("%s%") do set resultat=%%r
-- Gilles LAURENT http://glsft.free.fr
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news:uoHdEQ7bHHA.4656@TK2MSFTNGP06.phx.gbl
| "Gilles LAURENT" <glsft@free.fr> wrote in message
| news:%23wQzC66bHHA.4632@TK2MSFTNGP03.phx.gbl...
|| "Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans
|| le message de news:urIXVB6bHHA.3616@TK2MSFTNGP05.phx.gbl
||| Mes éminents confrères, bien plus érudits en langage batch, auront
||| tôt fait de préciser comment passer le guillemet comme délimiteur.
||| Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué.
||| :-)
|||
||| Jacques
||
|| :-)
||
|| Sans les guillemets (une seule ligne):
|| for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)"
|| fichier.txt') do set resultat=%%~r
|
| Bien vu Gilles, j'avais également pensé à jouer d'une forme
| d'expansion mais en cherchant sommairement je n'ai rien trouvé de
| convenable.
|
| Concernant la tactique qui consisterait à utiliser les guillemets
| comme délimiteurs, aurais-tu la solution? Je n'ai rien trouvé non
| plus à ce sujet, à part une référence disant que tous les caractères
| sont acceptés. Mais si j'écris "delims="" ou même "delims=^"" j'ai
| une erreur de syntaxe.
|
| Jacques
Le guillemet n'est pas supporté en tant que délimiteur car il entre en
conflit avec la syntaxe utilisée pour définir les options du for /f. Il
est donc nécessaire de décomposer pour pouvoir s'en sortir :
:: extraction de la ligne
for /f "tokens=*" %%r in ('findstr "t3)" fichier.txt') do set s=%%r
:: substitution des guillemets par des quotes (ou autre caractère)
set s=%s:"='%
:: split
for /f "tokens=2 delims='" %%r in ("%s%") do set resultat=%%r
"Jacques Barathon [MS]" a écrit dans le message de news: | "Gilles LAURENT" wrote in message | news:% || "Jacques Barathon [MS]" a écrit dans || le message de news: ||| Mes éminents confrères, bien plus érudits en langage batch, auront ||| tôt fait de préciser comment passer le guillemet comme délimiteur. ||| Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. ||| :-) ||| ||| Jacques || || :-) || || Sans les guillemets (une seule ligne): || for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" || fichier.txt') do set resultat=%%~r | | Bien vu Gilles, j'avais également pensé à jouer d'une forme | d'expansion mais en cherchant sommairement je n'ai rien trouvé de | convenable. | | Concernant la tactique qui consisterait à utiliser les guillemets | comme délimiteurs, aurais-tu la solution? Je n'ai rien trouvé non | plus à ce sujet, à part une référence disant que tous les caractères | sont acceptés. Mais si j'écris "delims="" ou même "delims=^"" j'ai | une erreur de syntaxe. | | Jacques
Le guillemet n'est pas supporté en tant que délimiteur car il entre en conflit avec la syntaxe utilisée pour définir les options du for /f. Il est donc nécessaire de décomposer pour pouvoir s'en sortir :
:: extraction de la ligne for /f "tokens=*" %%r in ('findstr "t3)" fichier.txt') do set s=%%r :: substitution des guillemets par des quotes (ou autre caractère) set s=%s:"='% :: split for /f "tokens=2 delims='" %%r in ("%s%") do set resultat=%%r
-- Gilles LAURENT http://glsft.free.fr
Jacques Barathon [MS]
"Gilles LAURENT" wrote in message news: <...>
Le guillemet n'est pas supporté en tant que délimiteur car il entre en conflit avec la syntaxe utilisée pour définir les options du for /f. Il est donc nécessaire de décomposer pour pouvoir s'en sortir :
:: extraction de la ligne for /f "tokens=*" %%r in ('findstr "t3)" fichier.txt') do set s=%%r :: substitution des guillemets par des quotes (ou autre caractère) set s=%s:"='% :: split for /f "tokens=2 delims='" %%r in ("%s%") do set resultat=%%r
En effet, j'avais pensé à la technique de remplacer le guillemet dans le texte pour pouvoir appliquer la décomposition sur un autre délimiteur, mais j'avais un doute sur la possibilité de quand même utiliser le guillemet comme délimiteur. Tant pis.
Jacques
"Gilles LAURENT" <glsft@free.fr> wrote in message
news:ebzIvc9bHHA.4888@TK2MSFTNGP06.phx.gbl...
<...>
Le guillemet n'est pas supporté en tant que délimiteur car il entre en
conflit avec la syntaxe utilisée pour définir les options du for /f. Il
est donc nécessaire de décomposer pour pouvoir s'en sortir :
:: extraction de la ligne
for /f "tokens=*" %%r in ('findstr "t3)" fichier.txt') do set s=%%r
:: substitution des guillemets par des quotes (ou autre caractère)
set s=%s:"='%
:: split
for /f "tokens=2 delims='" %%r in ("%s%") do set resultat=%%r
En effet, j'avais pensé à la technique de remplacer le guillemet dans le
texte pour pouvoir appliquer la décomposition sur un autre délimiteur, mais
j'avais un doute sur la possibilité de quand même utiliser le guillemet
comme délimiteur. Tant pis.
Le guillemet n'est pas supporté en tant que délimiteur car il entre en conflit avec la syntaxe utilisée pour définir les options du for /f. Il est donc nécessaire de décomposer pour pouvoir s'en sortir :
:: extraction de la ligne for /f "tokens=*" %%r in ('findstr "t3)" fichier.txt') do set s=%%r :: substitution des guillemets par des quotes (ou autre caractère) set s=%s:"='% :: split for /f "tokens=2 delims='" %%r in ("%s%") do set resultat=%%r
En effet, j'avais pensé à la technique de remplacer le guillemet dans le texte pour pouvoir appliquer la décomposition sur un autre délimiteur, mais j'avais un doute sur la possibilité de quand même utiliser le guillemet comme délimiteur. Tant pis.
Jacques
François
J'ai donc utilisé la soluce de Jacques et le complément de Gilles. Cela me convient parfaitement... Concernant les guillements, j'ai utilisé un vbs avec la fonction Mid et len pour découper... Mais je vais tester la solution proposée en soirée qui m'éviterait 2 types de scripts... A+ !
François
"Jacques Barathon [MS]" a écrit dans le message de news: | Mes éminents confrères, bien plus érudits en langage batch, auront | tôt fait de préciser comment passer le guillemet comme délimiteur. | Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. | :-) | | Jacques
:-)
Sans les guillemets (une seule ligne): for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%~r
J'ai donc utilisé la soluce de Jacques et le complément de Gilles. Cela
me convient parfaitement...
Concernant les guillements, j'ai utilisé un vbs avec la fonction Mid et
len pour découper... Mais je vais tester la solution proposée en soirée
qui m'éviterait 2 types de scripts...
A+ !
François
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news:urIXVB6bHHA.3616@TK2MSFTNGP05.phx.gbl
| Mes éminents confrères, bien plus érudits en langage batch, auront
| tôt fait de préciser comment passer le guillemet comme délimiteur.
| Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué.
| :-)
|
| Jacques
:-)
Sans les guillemets (une seule ligne):
for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do
set resultat=%%~r
J'ai donc utilisé la soluce de Jacques et le complément de Gilles. Cela me convient parfaitement... Concernant les guillements, j'ai utilisé un vbs avec la fonction Mid et len pour découper... Mais je vais tester la solution proposée en soirée qui m'éviterait 2 types de scripts... A+ !
François
"Jacques Barathon [MS]" a écrit dans le message de news: | Mes éminents confrères, bien plus érudits en langage batch, auront | tôt fait de préciser comment passer le guillemet comme délimiteur. | Dans ce cas-là, il faudra accéder au 2e token et le tour sera joué. | :-) | | Jacques
:-)
Sans les guillemets (une seule ligne): for /f "tokens=6 delims=) " %%r in ('findstr "(ident3)" fichier.txt') do set resultat=%%~r