Vous pouvez utiliser for /f
itérer sur la sortie d'une commande:
for /f "usebackq delims=" %%x in (`your command`) do ...
Vous n'avez pas besoin d'un fichier temporaire tout; cela ne vous rapportera rien (sauf devoir penser à l'endroit où vous pourriez avoir des permissions d'écriture et n'oubliez pas de supprimer le fichier par la suite).
for
effectue une répétition ligne par ligne sur la sortie, en effectuant une segmentation au fur et à mesure. C'est pourquoi il y a un delims=
à la fin qui désactive effectivement tout tokenizing afin que vous n'obteniez pas votre production divisée aux espaces. Il existe d'autres options, telles que skip=n
qui ignore les lignes n avant de commencer le traitement que vous pouvez utiliser pour ignorer un en-tête.
A l'intérieur de cette boucle, vous pouvez alors effectuer les opérations suivantes:
for /f "usebackq delims=" %%x in (`your command`) do set VAR=%%x
Soyez très prudent ce que vous faites ensuite avec cette variable, cependant, car il peut contenir des caractères les traite de coquille comme spéciale, comme >
, <
, &
, etc.Vous pouvez vous créer ici une sorte de lot vulnérabilité d'injection lorsque vous faites quelque chose comme ce qui suit:
echo %VAR%
et que quelqu'un décide de mettre la chaîne suivante en son nom:
foo & rd /s q \
Si vous savez que seulement seule ligne avec des rendements de contenu utilisables et le reste est inutile indésirable alors vous pouvez briser la boucle prématurément:
for /f "usebackq delims=" %%x in (`your command`) do set VAR=%%x&goto break
:break
+1: agréable, bien que lit une seule ligne, mais cela suffit pour cette question. – van