前提・実現したいこと
言語:batファイル
環境:Windows10 64bit
以下のように変数にjsonを代入し、
jqによって抽出した数値を変数に格納するバッチを作りたいと考えています
例)
set JSONDATA={"status":200,"ids":[{"id":76}]}
filter.bat "%JSONDATA%" ".ids[].id"
echo %ANS%
=> 76と出力されてほしい
該当のソースコード
bat
1@echo on 2for /f %%i in ('echo %~1 ^| jq.exe %2') do set ANS=%%i
発生している問題・エラーメッセージ
しかし、上のようなバッチを書いたところ、以下のように出力されました。
> filter.bat "%JSONDATA%" ".ids[].id" for /F %i in ('echo {"status":200 "ids":[{"id":76}]} | jq.exe ".status"') do set ANS=%i parse error: Expected separator between values at line 1, column 19
試したこと
出力から、上のエラーはcmdの仕様でJSON内の「,」が削除された為だろうと考えています。
しかし、「,」を削除されないようにしようと「%~1」を""で囲むと、
そのままjson全体が""で囲まれた状態になってしまうため、jqがフォーマットエラーを出してしまいます。
どのように書けば期待通りの挙動にすることができるのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/27 11:44
2020/01/28 08:29
2020/01/28 09:12