1

バッチ ファイルを作成しようとしていますが、理由は不明ですが、プロセスが実行されると、変数%UT:~47%は空のままになり、2 回目の実行後にのみ満たされます。This を 1 回実行すると、エコー結果は ~47 ですが、2 回目の結果は Yes または NO (フランス語では Oui または Non) と表示されます。理由を知っている人はいますか?

パラメータがない場合、最初の条件は完全に機能します。しかし、パラメーターにユーザー名を指定してバッチを実行すると、ユーザー アカウントがアクティブ化されているかどうかがチェックされます。実際には英語でアカウントを表す「Compte」という単語を含む行をファイル C:\user.txt に入れましたが、セット /p はバグがあるようです。エコー コマンドで ~47 が空として返されますが、ファイル c :\user.txt を含む

(Compte : actif                                 Oui or Non)

英語では

(Account : active                                Yes or No)

@echo off
::if no parameter
if "%~1" == "" echo Please Indicate an User to delete ! & exit /b 0
for %%U in (%*) do (
    net user %%U | find "Compte">c:\user.txt || echo can't find user %%U
    set /p UT=<c:\user.txt
    echo %UT:~47%
)
4

1 に答える 1

0

これは、for ループで変数「UT」を設定しているためです。詳細については、「バッチ遅延拡張」を検索してください。また、おそらく最初に出力をファイルにリダイレクトする必要はありませんfor /f "tokens=* eol=" %%a in ('net user add %%U')。変数で出力を直接キャプチャするために使用できます。

于 2012-11-18T01:26:44.867 に答える