2017-06-28 1 views
0

J'ai un script qui recherche une chaîne "SiteName" dans un fichier. Ce que je veux faire est Si chaîne = "SiteName" renvoie le numéro d'identification correspondant.Script batch - Rechercher la chaîne "Name" Retourne l'ID correspondant à la chaîne

@echo off 
set SiteID 
%SiteID% = findstr /s /b "SiteName" %WinDir%\System32\Inetsrv\Config\applicationHost.Config 

Dans mon dossier Je possède ce <site name="SiteName" id="3" serverAutoStart="true"> Je veux stocker l'ID en% variable SiteID de%.

Répondre

1
FOR /f "usebackqtokens=1-3delims=<=> " %%a IN ("%filename1%") DO (
if "%%a"=="site" if "%%b"=="name" set siteid=%%~c 
) 
echo %siteid% 

fouillerai le nom d'une ligne qui est structuré comme

DELIMITERSSiteDELIMITERSNomDELIMITERS"requireddata"tout

délimiteurs sont l'une des <, =, > ou Espace

Le usebackq permet le nom du fichier (qui peut être une constante que vous désignez) à citer (obligatoire si elle contient des séparateurs), et le ~ supprime tout guillemets autour du troisième jeton (un jeton est la chaîne entre les délimiteurs-chaînes)

+0

J'ai testé et ça marche pour moi si je reçois un jeton de '1' à' 5' et dans la commande 'set' j'utilise le' %% ~ e' variable. – dcg

+0

dans ce cas% filename% est le chemin d'accès au fichier? –

+0

Oui - J'ai utilisé une variable pour contenir le nom de fichier. – Magoo