コンピュータ名のテキストファイルを通過し、それぞれにログインしているユーザー名を取得するバッチファイルを作成しようとしています。私はループ内で必要な変数を設定する方法がわかりません。私はここで見つけたいくつかの解決策を試しましたが、どれもうまくいかないようです。 output.txtには以下が含まれています:ファイルからバッチスクリプトの変数に行を設定する
PCHTW-HTT10425
PCHTW-HTT10437
これらは、私が渡そうとしているコンピュータ名です。私はecho %%A
という名前を付けますが、%% Aに設定すると何もしません。それを読んで私はSETLOCAL EnableDelayedExpansion
の追加がトリックをするだろうと思ったが、それは何もしていないようだ。私もecho name:!name!
を試しましたが、それも動作しません。
for /F "tokens=*" %%A in (%FILEPATH%output.txt) do (
setlocal EnableDelayedExpansion
echo %%A
SET /p name=%%A
echo name:%name%
FOR /F "tokens=2 delims=\" %%F IN ('wmic /NODE:"%name%" computersystem get UserName') DO (
SET username=%%F
)
echo %username%
pause
ENDLOCAL
)
[遅延拡張](http://stackoverflow.com/a/30284028/2152082)が必要です。 'SET/p name = %% A'を削除してください。 '%username%'を設定しないでください。システム変数です。別の名前を '%usrname%'としてください。 (変数 '%name%'は必要ありません - 代わりに '%% A'を使用してください)。 – Stephan
@Stephan!usrname!を渡すことができますか?他のコマンドをオンにします。たとえば、コンピュータ上でタスクをスケジュールしたい場合は、 'schtasks/Create/ru!usrname !'を実行できますか? – shoes
はい、どうしてですか? 'for'ループの中では、' schtasks/Create/ru %% F'を使用することもできます - 待つ - その醜い 'CR'があります...待って、答えを追加します。 – Stephan