1

わかりました、この基本的な IF ステートメントを取得しました。ユーザー名に基づいてユーザーロールを設定したい。ただし、 set ステートメントが実行されないため、空のエコーが発生したように見えます。

if "%username%" == "admin" (
    set role = "admin"
) else (
    set role = "user"
)

echo %role%

何か見逃していましたか、それとも Windows がそれをサポートしていないだけなのでしょうか?

4

1 に答える 1

1

スペースを削除します。現在、環境変数に値を設定していますrole(スタック オーバーフローでは表示されない末尾のスペースを使用)。また、役割は次のようになります"admin"(引用符と先頭のスペースを含む、つまり、ここでも表示されません)。

setこれは、コマンド ラインからパラメーターを指定せずに実行することで確認できます。すべての変数のリストが表示され、不要なスペースがはっきりとわかります。

if "%username%" == "admin" (
    set role=admin
) else (
    set role=user
)

echo %role%

if ステートメントでまだ引用符が必要な唯一の理由は、ステートメントが%username%存在しない/空だった場合に無効になるためです。その場合、行は次のようになります。

if == admin (

...もちろん無効です。引用符である必要さえありません。次のように書くこともできます。

if %username%XYZ == adminXYZ (
于 2012-12-05T09:56:51.557 に答える