[前の記事]« [WIN2000] for in ( ) do .. の日本語(全角)文字処理にバグあり
[次の記事][NT4.0]更新日が最新のファイルのバイト数を取得したい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FOR /F」索引へ
▲カテゴリー「SET, PATH, %環境変数%」索引へ

標準出力に出された文字列をバッチファイル内の変数に入れたい

474) テキストファイルの内容から環境変数の設定 TANZO 2004/05/20(木) 20:56


はじめまして、TANZOと申します。
表題のとおり、テキストファイルの内容を環境変数に登録しようと思っているのですが、
なかなかうまくいきません。環境は、Win98se,WinMe,WinNT4,Win2000,WinXPです。

何をしたいかと申しますと、VBSによって標準出力に出された文字列(WSHのバージョン等)
を、バッチファイル内で変数に入れたいと考えています。

NT,2000、XPでは、

for /F "tokens=*" %%a in ('cscript verchk.vbs') do set VBSVER=%%a

**********verchk.vbsの内容***********
Wscript.Echo Wscript.Version
(これでVBSのバージョンが返ります。)
*************************************

とやることで、変数VBSVERにVBSのバージョン番号が入るのですが、
98SEでは、(Meはまだ用意できていないので未確認ですが。。。)
どうも上記のような書式が認められていないようなので、
どうしたものかなと思い、VBSの結果をいったんファイルに書き出して、それを読み込もうと考えました。
というわけで、上記VBSをバッチファイルから

cscript verchk.vbs > kekka.txt

というような具合でファイルに書き出すと、
******************kekka.txt******************
Microsoft (R) Windows Scripting Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved

5.6

*********************************************

というような感じで5行返ってきました。
4行目の5.6と言う数字を変数に入れたいと思うのですが、
何かいい方法はありますでしょうか?
また、これを応用して、WSHのバージョン番号だけでなく、
特定のソフトのインストール先等の情報も取得したいと思っています。
(今のところ必要とする結果は4行目に限られているようです。)

VBSからの標準出力をそのまま受けられるの一番よいのですが。。。

いろいろと検索してみましたがなかなか解決策が見つからず、質問させていただきました。

識者の皆様、ご教授よろしくお願いします。

475) Re:テキストファイルの内容から環境変数の設定 oo 2004/05/20(木) 21:54


>何をしたいかと申しますと、VBSによって標準出力に出された文字列(WSHのバージョン等)
>を、バッチファイル内で変数に入れたいと考えています。

>NT,2000、XPでは、

>for /F "tokens=*" %%a in ('cscript verchk.vbs') do set VBSVER=%%a

>**********verchk.vbsの内容***********
>Wscript.Echo Wscript.Version
>(これでVBSのバージョンが返ります。)
>*************************************

>とやることで、変数VBSVERにVBSのバージョン番号が入るのですが、
>98SEでは、(Meはまだ用意できていないので未確認ですが。。。)
>どうも上記のような書式が認められていないようなので、
>どうしたものかなと思い、VBSの結果をいったんファイルに書き出して、それを読み込もうと考えました。
>というわけで、上記VBSをバッチファイルから

>cscript verchk.vbs > kekka.txt

>というような具合でファイルに書き出すと、
>******************kekka.txt******************
>Microsoft (R) Windows Scripting Host Version 5.6
>Copyright (C) Microsoft Corporation 1996-2001. All rights reserved

>5.6

>*********************************************

>というような感じで5行返ってきました。
>4行目の5.6と言う数字を変数に入れたいと思うのですが、
>何かいい方法はありますでしょうか?
>また、これを応用して、WSHのバージョン番号だけでなく、
>特定のソフトのインストール先等の情報も取得したいと思っています。
>(今のところ必要とする結果は4行目に限られているようです。)

>VBSからの標準出力をそのまま受けられるの一番よいのですが。。。

>いろいろと検索してみましたがなかなか解決策が見つからず、質問させていただきました。

>識者の皆様、ご教授よろしくお願いします。

cscriptコマンドで、//logo がデフォルトだから起動メッセージが出力されるんでしょう。cscriptとだけ入力するとヘルプが表示されると思いますが、
cscript //nologo verchk.vbs
で表示されなくなります。
また、結果をファイルに入れても、win9x系ではファイルからの読み取りも標準機能では出来ませんが、
Wscript.Echo "set VBSVER=" & Wscript.Version
に修正すれば、
cscript //nologo verchk.vbs > kekka.bat
call kekka.bat
で、VBSVERにバージョンがセットできます。


476) Re2:テキストファイルの内容から環境変数の設定 TANZO 2004/05/21(金) 00:34


oo様、ご教授ありがとうございます。

>cscriptコマンドで、//logo がデフォルトだから起動メッセージが出力されるんでしょう。cscriptとだけ入力するとヘルプが表示されると思いますが、
>cscript //nologo verchk.vbs
>で表示されなくなります。

ありがとうございます。cscriptコマンドもさっき覚えたところだったので、
うれしくて何の疑いもなくそのまま使っていました。
これからはもう少し冷静に観察して行こうと思います。

>また、結果をファイルに入れても、win9x系ではファイルからの読み取りも標準機能では出来ませんが、

やはりそうなのですが、実はファイルの読み込みぐらいはすぐにできるだろうと
たかをくくっていたのですが、完全に裏目に出た気分です。

>Wscript.Echo "set VBSVER=" & Wscript.Version
>に修正すれば、
>cscript //nologo verchk.vbs > kekka.bat
>call kekka.bat
>で、VBSVERにバージョンがセットできます。

正直、目からうろこです。
VBSにset文を書かせてそれをbatファイルにし、実行するなんて
夢にも思いつきませんでした。

これで1日半ぐらい悩んでいたのでかなりうれしいです。

本当にどうもありがとうございました。
これからも精進してまいります。。。

478) Re3:テキストファイルの内容から環境変数の設定 oo 2004/05/22(土) 20:25


>正直、目からうろこです。
>VBSにset文を書かせてそれをbatファイルにし、実行するなんて
>夢にも思いつきませんでした。

Win9x系はNT,2000,XPのようにコマンドの処理結果を扱うことが出来ないので、
何かの時にはひたすら一時ファイルとか、動的に作ったBATファイルとかを作ってやるのが技のようです。
(今時はVBS+WSHを憶えたらそれを使うほうが楽でしょうね)
私がすごいと思った例:
ECHO @ECHO off>ZZZZZZZ1.BAT
ECHO SET A=%%3>>ZZZZZZZ1.BAT
ECHO SET B=%%4>>ZZZZZZZ1.BAT
DIR | FIND "ZZZZZZZ1 BAT" >ZZZZZZZ2.BAT
CALL ZZZZZZZ2.BAT
DEL ZZZZZZZ1.BAT
DEL ZZZZZZZ2.BAT
ECHO [%A%] [%B%]
 
 


カテゴリー「FOR /F」索引へ
カテゴリー「SET, PATH, %環境変数%」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年05月20日 00:52に投稿されたエントリーのページです。

ひとつ前の投稿は「[WIN2000] for in ( ) do .. の日本語(全角)文字処理にバグあり」です。

次の投稿は「[NT4.0]更新日が最新のファイルのバイト数を取得したい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート