- ベストアンサー
コマンドプロンプト バッチ|結果を変数に代入する方法
バッチで、外部のEXEを実行した結果を変数に代入する方法を教えてください。 外部のEXEは hogehoge.exe あいうえお と実施した場合 おえういあ という結果を返します。 たとえば… SET HOGE=hogehoge.exe あいうえお ECHO %HOGE% の結果として おえういあ を表示する という風にしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Win2000やXPなど NT系のコマンドプロンプトなら usebackqを使って バッチの変数に代入してやればいいと思いますよ for /F "usebackq" %%s in (`hogehoge.exe あいうえお`) DO@ SET HOGE=%%s といった具合で in句の『hogehoge.exe あいうえお』の実行結果が バッチ変数 %%sに代入されます
その他の回答 (2)
- Werner
- ベストアンサー率53% (395/735)
回答No.3
> ECHO %%s forを既に抜けてるんだから %%s はもうないでしょう。 set hogeしてるんだから表示するべきなのは%hoge%のほうでは? あと、ANo.1が動かないのは @ の位置がおかしいだけじゃないかな?
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
ちなみに usebackq オプションを使わないときには for /F "delims=" %%s in ('hogehoge.exe あいうえお') do @set hoge=%%s とシングルクォートでくくれば OK.
補足
前の方の方法だと強制終了してしまいましたが、こちらだとそうはなりませんでした。 ですが、代入されていないようでした。 そもそも、実行している外部ファイルがよくないのかもしれません…。 ちなみにnkfで、外部ファイルに記載されている文字列をURLエンコードしていくというのをやりたかったので for /F "delims=" %%s in ('NKF.EXE --url-input %%X') do @set hoge=%%s ECHO %%s このように記載しましたが、ECHOはsとかOFFというように表示されました。 (echoの使い方に自信がないので %s%等も試してみましたが同じでした)