-1
votes

Comment lire les données JSON dans le script de lots

J'ai un fichier JSON, nommé "config.json", qui ressemble à ceci:

{"runenvironment": "dev"}

Dans un fichier de commandes sous le même répertoire, je tiens à lire la valeur de l'élément "Runnvironment". Mon script de lot ressemblerait à:

si [JSONELement] == ​​'dev' ( :: faire quelque chose )

Quelqu'un peut-il me montrer comment faire cela?


3 commentaires

Mieux vaut utiliser une langue de script avec des outils pour la gestion des fichiers JSON. Pour un démarrage dans la ligne CMD pour / f "jetons = 1,2 delims =: {}"% a in (fichier.json) do @if "% ~ b" == "dev" @echo% ~ a =% ~ B dans un fichier de parquet double les signes en pourcentage.


Si vous souhaitez toujours utiliser une langue de script sans spécificité JSON Traitement des outils de traitement, il est important de noter que le .json Fichier peut transporter plusieurs [JSONELYMENT] 'S avec la valeur S sur la même ligne et que ces lignes peuvent ou non contenir des accolades d'ouverture ni de fermeture. avoir des virgules traînant. Cela signifierait que vous auriez besoin d'isoler les lignes contenant la chaîne d'abord, puis d'analyser cette ligne pour déterminer votre élément et votre valeur spécifiques. la réponse que j'ai fournie utilise des utilisations FindStr pour isoler les lignes, de sorte que cela puisse aider si ma réponse n'était pas exactement ce dont vous aviez besoin.


Parfois, il vous suffit de dire arrêter, vous utilisez le mauvais outil. Les fichiers de lots ne sont tout simplement pas le meilleur choix pour cela, leur tranchant est inférieure à la subpar et à écrire un analyseur robuste n'est tout simplement pas possible. Votre seul espoir est d'obtenir quelque chose qui peut lire votre valeur en supposant qu'il n'y ait pas de caractères étranges dans le fichier, mais cela ne sera jamais un véritable analyseur JSON.


3 Réponses :


0
votes

YO peut faire de cette manière xxx


1 commentaires

Serait-il possible de lire directement à partir du fichier JSON plutôt que de la ligne "Set String = ..."?



1
votes

dans PowerShell Par exemple, vous pouvez faire:

@Echo off
for /f "tokens=1,2 delims=:{} " %%A in (Config.json) do (
    If "%%~B"=="Dev" Echo (%%~A=%%~B^)
)


1 commentaires

Juste une note pour ajouter que le ConvertFrom-JSON CMDLET a été introduit dans PowerShell-v3.0 , donc ne peut pas être disponible dans des systèmes d'exploitation antérieurs tels que Windows-7 , sans installer spécifiquement une mise à jour version PowerShell .



1
votes

Si tout ce que vous avez à faire est d'effectuer une commande spécifique uniquement si la valeur de runenvironment est dev alors cela doit être tout ce dont vous avez besoin, (à partir d'un ou le ) : xxx

vous remplaceriez simplement echo votre commande ici avec votre commande prévue.


0 commentaires