教えて! goo のコンテンツに対する取り組みについて

バッチで、外部のEXEを実行した結果を変数に代入する方法を教えてください。

外部のEXEは
hogehoge.exe あいうえお
と実施した場合
おえういあ
という結果を返します。

たとえば…

SET HOGE=hogehoge.exe あいうえお
ECHO %HOGE%

の結果として おえういあ を表示する
という風にしたいです。

gooドクター

A 回答 (3件)

Win2000やXPなど NT系のコマンドプロンプトなら


usebackqを使って バッチの変数に代入してやればいいと思いますよ

for /F "usebackq" %%s in (`hogehoge.exe あいうえお`) DO@ SET HOGE=%%s
といった具合で in句の『hogehoge.exe あいうえお』の実行結果が バッチ変数 %%sに代入されます
    • good
    • 5

> ECHO %%s


forを既に抜けてるんだから %%s はもうないでしょう。
set hogeしてるんだから表示するべきなのは%hoge%のほうでは?

あと、ANo.1が動かないのは @ の位置がおかしいだけじゃないかな?
    • good
    • 1

ちなみに 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%等も試してみましたが同じでした)

補足日時:2008/08/27 00:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング