[前の記事]« [XP][2003]システム日付、時間、秒をファイル名にしたいがエラーが出てしまう
[次の記事]ファイルのサイズ(バイト数)だけテキスト化するには »

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

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

起動時に引数として指定した名前の環境変数をバッチ内で参照するには

193.
引数で与えた環境変数の取得方法
2004年02月04日(水) 14時40分
井上 一
初めまして 井上といいます。
初歩的な事だと思うのですが思うようにいかないのでお教え願います。

[やりたいこと]
バッチに環境変数名を与えて実施します。
バッチ内で、その環境変数が持っている内容を取得し内容により動作
を変えます。

例)
> abc.bat PROCESSOR_IDENTIFIER
とした場合、バッチ(abc.bat)内で、PROCESSOR_IDENTIFIER が持っ
ている内容「x86 Family 6 Model 8 Stepping 10, GenuineIntel」
を取りたい。
与える引数(PROCESSOR_IDENTIFIER)は、必要に応じて変更されます。

やってみたこと。
--- abc.bat ---
set arg1=%1
set agr2=%arg1%
-----
とした場合、agr1 には、与えた引数(環境変数名)が入り、arg2に
も、同じ内容が入ります。

set agr2=%arg1%  を
           ↓
set agr2=%%arg1%% にすると agr2 には、“agr1”の文字が入ります。

引数ではなく、直接
set agr2=%PROCESSOR_IDENTIFIER%
とすると、arg2 には、“x86 Family 6 Model 8 Stepping 10, GenuineIntel”
が入ります。

上記は例ですので、環境変数名(PROCESSOR_IDENTIFIER)は使いま
せんが、コマンドプロンプトで set したときに表示される環境変数
を指定します。

環境は、Windows 2000 Server SP4 でテストしています。


ご存じの方がいらっしゃいましたらよろしくお願いいたします。

                                                (ino)
194.
Re:引数で与えた環境変数の取得方法
2004年02月04日(水) 14時52分
ふぇむ
>初歩的な事だと思うのですが思うようにいかないのでお教え願います。

ん~、こんな感じのイメージですかね。


@echo off
setlocal
set ABC=12345
set XYZ=9876


set VARIABLE=ABC
call :GETVAL VALUE  %%%VARIABLE%%%
echo 変数 %VARIABLE% の内容は %VALUE% です。


set VARIABLE=XYZ
call :GETVAL VALUE  %%%VARIABLE%%%
echo 変数 %VARIABLE% の内容は %VALUE% です。

goto :end

:GETVAL
set %~1=%~2
goto :eof

:end
endlocal
195.
Re:引数で与えた環境変数の取得方法
2004年02月04日(水) 14時57分
じゃく
>[やりたいこと]
>バッチに環境変数名を与えて実施します。
>バッチ内で、その環境変数が持っている内容を取得し内容により動作
>を変えます。

>例)
>> abc.bat PROCESSOR_IDENTIFIER
>とした場合、バッチ(abc.bat)内で、PROCESSOR_IDENTIFIER が持っ
>ている内容「x86 Family 6 Model 8 Stepping 10, GenuineIntel」
>を取りたい。

>--- abc.bat ---
>set arg1=%1
>set agr2=%arg1%
>-----

単に呼び出すときに
C:\>abc.bat PROCESSOR_IDENTIFIER %PROCESSOR_IDENTIFIER%

として呼び出し

--- abc.bat ---
set arg1=%1
set agr2=%2
-----

ではだめですか?

だめなようならば、以下のように call 文の引数として再評価させて、サブルーチン側で環境変数にセットする方法があります。
----------abc.bat
@echo off
set arg1=%1
call :sub %%%arg1%%%
echo %arg2%

exit /b

:sub
set arg2=%*
goto :EOF
----------------
202.
助かりました。
2004年02月04日(水) 20時38分
井上 一
ふぇむ様、じゃく様

ありがとうございました。

いったん call 文の引数として再評価しなくてはダメみたいですね。
211.
Re2:引数で与えた環境変数の取得方法
2004年02月05日(木) 18時16分
ふぇむ
>ん~、こんな感じのイメージですかね。

やってることは実質として同じなんだと思いますが、次のようなインライン記述でもできるようですね。

call set VALUE=%%%VARIABLE%%%
222.
Re3:引数で与えた環境変数の取得方法
2004年02月06日(金) 23時31分
oo
>>ん~、こんな感じのイメージですかね。

>やってることは実質として同じなんだと思いますが、次のようなインライン記述でもできるようですね。

>call set VALUE=%%%VARIABLE%%%

setlocal していいなら、これでもいいです。

setlocal enabledelayedexpansion
set VALUE=!%VARIABLE%!

193.引数で与えた環境変数の取得方法 井上 一 04/02/04(水) 14:40
194.Re:引数で与えた環境変数の取得方法 ふぇむ 04/02/04(水) 14:52
211.Re2:引数で与えた環境変数の取得方法 ふぇむ 04/02/05(木) 18:16
222.Re3:引数で与えた環境変数の取得方法 oo 04/02/06(金) 23:31
195.Re:引数で与えた環境変数の取得方法 じゃく 04/02/04(水) 14:57
202.助かりました。 井上 一 04/02/04(水) 20:38
 
 


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

 

カテゴリー一覧

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


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

資料書籍

About

2004年02月04日 13:30に投稿されたエントリーのページです。

ひとつ前の投稿は「[XP][2003]システム日付、時間、秒をファイル名にしたいがエラーが出てしまう」です。

次の投稿は「ファイルのサイズ(バイト数)だけテキスト化するには」です。

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

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