- PR -

グループ名を条件とするIF文を作りたい

1
投稿者投稿内容
BROM
会議室デビュー日: 2009/04/03
投稿数: 3
投稿日時: 2009-04-03 10:49
IF文でログインユーザー名を分岐条件として処理しようと考えたのですが
支障があったので、グループが条件にできるかなと考え、
以下の文を作ってみましたが、うまく機能しません。
EQUでもNEQでもENDに飛んでしまいます。

IF /I %USERGROUP% EQU GROUPNAME GOTO END
ECHO ***
:END

ネットで%USERGROUP%という記述を見たのですが、正しい指定なのでしょうか。
もしくは構文が間違っているのでしょうか。
正しい指定・構文がありましたらご教示願います。
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2009-04-03 11:12
『ECHO』と言う記述があることから、『DOS』のバッチであると思われますが、
『ECHO %USERGROUP%』で正しい値が表示されなければ使用出来ません。

上記のコマンドで値が表示されるのであれば、構文の誤りだと思います。

(ちなみに当方の環境はXP Pro SP3です。)
いとっと
常連さん
会議室デビュー日: 2005/06/10
投稿数: 33
投稿日時: 2009-04-03 11:13
引用:

BROMさんの書き込み (2009-04-03 10:49) より:
IF文でログインユーザー名を分岐条件として処理しようと考えたのですが
支障があったので、グループが条件にできるかなと考え、
以下の文を作ってみましたが、うまく機能しません。
EQUでもNEQでもENDに飛んでしまいます。

IF /I %USERGROUP% EQU GROUPNAME GOTO END
ECHO ***
:END



グループには複数所属出来ることを考えると、一意に取り出すことは難しいのではない
でしょうか?
少なくともUSERGROUPという環境変数は無かったと記憶しています。

例えばですが、私はAdministratorsグループに参加しているかどうかを確認する時には
以下のロジックで確認するようにしています。


net localgroup Administrators | FIND /I "%USERNAME%"


このコマンドの実行結果のERRORLEVELが0の場合はそのグループに自分が参加している
という判断して処理をします。
このグループ名の部分を可変にしてチェックすれば希望の動作は出来ると思います。


引用:

ネットで%USERGROUP%という記述を見たのですが、正しい指定なのでしょうか。



どのようなコンテキストで使われているのかがわからないと正しいかどうか判断は
難しいです。参考にされたサイトを教えていただけますでしょうか?


[ メッセージ編集済み 編集者: いとっと 編集日時 2009-04-03 11:15 ]
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2009-04-03 11:16
%USERGROUP% がログオンユーザの(ローカル? グローバル?)グループ名であるとして、
まず環境変数として情報は持っていません。
他にあるかは未確認ですが、net user [username] か net localgroup [groupname] で
一覧を出すことは可能でした。

...ただ、複数のグループに属している場合もあるだろうからコマンド一発比較とかは
無理ですね。リストに落として for で拾って比較するとかうじゃうじゃ。


[ メッセージ編集済み 編集者: ほったて 編集日時 2009-04-03 11:19 ]
BROM
会議室デビュー日: 2009/04/03
投稿数: 3
投稿日時: 2009-04-03 11:20
引用:

上総さんの書き込み (2009-04-03 11:12) より:
『ECHO』と言う記述があることから、『DOS』のバッチであると思われますが、
『ECHO %USERGROUP%』で正しい値が表示されなければ使用出来ません。

上記のコマンドで値が表示されるのであれば、構文の誤りだと思います。

(ちなみに当方の環境はXP Pro SP3です。)



ご回答ありがとうございます。
>『ECHO』と言う記述があることから
ごめんなさい。適当に書いてしまいました。
実際その行は、メッセージを表示する.vbsをCALLする文が入っています。
1

スキルアップ/キャリアアップ(JOB@IT)