2009-05-15 8 views
3

Je voudrais faire une analyse simple dans un fichier batch.Parse texte cité dans le fichier de commandes

Compte tenu de la ligne d'entrée:

Foo: Lorem Ipsum 'The quick brown fox' Bar 

Je veux extraire la partie cité (sans les guillemets):

The quick brown fox 

En utilisant uniquement les outils de ligne de commande standard disponibles sous Windows XP.

(j'ai regardé find et findstr mais ils ne semblent pas tout à fait assez souples pour ne retourner que partie d'une ligne.)

Répondre

4

Quelque chose comme cela fonctionnera, mais seulement si vous avez une cité chaîne par ligne d'entrée:

@echo OFF 
SETLOCAL enableextensions enabledelayedexpansion 

set TEXT=Foo: Lorem Ipsum 'The quick brown fox' Bar 
@echo %TEXT% 

for /f "tokens=2 delims=^'" %%A in ("abc%TEXT%xyz") do (
    set SUBSTR=%%A 
) 

@echo %SUBSTR% 

sortie, chaîne citée dans le milieu:

Foo: Lorem Ipsum 'The quick brown fox' Bar 
The quick brown fox 

sortie, chaîne entre guillemets à l'avant:

'The quick brown fox' Bar 
The quick brown fox 

sortie, chaîne entre guillemets à la fin:

Foo: Lorem Ipsum 'The quick brown fox' 
The quick brown fox 

sortie, chaîne entière cité:

'The quick brown fox' 
The quick brown fox 
+0

Vous pouvez également utiliser des jetons = 2 et utilisez simplement %% A. Cette méthode peut échouer, cependant, si la chaîne entre guillemets est exactement au début de la ligne (je doute que retourne les occurrences vides de tokenizing). La seule autre option serait d'itérer sur la chaîne de caractères et de garder une trace des citations; IOW construire un analyseur réel. – Joey

+0

Bon point Johannes. J'ai édité ma réponse pour utiliser votre idée et préfixer/ajouter du texte à la chaîne analysée afin que le second jeton soit toujours la chaîne entre guillemets. –

Questions connexes