2016-05-27 8 views
0

コンピュータ名のテキストファイルを通過し、それぞれにログインしているユーザー名を取得するバッチファイルを作成しようとしています。私はループ内で必要な変数を設定する方法がわかりません。私はここで見つけたいくつかの解決策を試しましたが、どれもうまくいかないようです。 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 
    ) 
+0

[遅延拡張](http://stackoverflow.com/a/30284028/2152082)が必要です。 'SET/p name = %% A'を削除してください。 '%username%'を設定しないでください。システム変数です。別の名前を '%usrname%'としてください。 (変数 '%name%'は必要ありません - 代わりに '%% A'を使用してください)。 – Stephan

+0

@Stephan!usrname!を渡すことができますか?他のコマンドをオンにします。たとえば、コンピュータ上でタスクをスケジュールしたい場合は、 'schtasks/Create/ru!usrname !'を実行できますか? – shoes

+0

はい、どうしてですか? 'for'ループの中では、' schtasks/Create/ru %% F'を使用することもできます - 待つ - その醜い 'CR'があります...待って、答えを追加します。 – Stephan

答えて

0
setlocal enabledelayedexpansion 
for /F "tokens=*" %%A in (%FILEPATH%output.txt) do (
    echo %%A 
    FOR /F "tokens=2 delims=\" %%F IN ('wmic /NODE:"%%A" computersystem get UserName') DO (
    for /f "delims=" %%B in ("%%F") do ( 
     echo %%B 
     schtasks /create /ru %%B ... 
    ) 
) 
    pause 
) 

で必要とされる\\を招くことなくNOTEオンのリストを取得するには

)、それを取り除くためにいくつかのコードがあります。私はdbenhamのone of several possibilitiesを使用しました。

0

あなたの質問は私の正しい答えは質問に答えていませんどのようにCOMPUTERS

のリストについては、LOGGEDON USERを取得する方法です。私のものは一本です。ノードの前に@看板を置く

wmic /output:"c:\Outputfile.html" /node:@"COMPUTERLIST.TXT" computersystem get username /format:htable 

は、ノードがcomputernamesまたはIPアドレス(あなたがミックスして一致させることができます)のテキストファイルが含まれていることを意味します。

wmic /?wmic /node /?wmic /output /?wmic /append /?wmic computersystem /?wmic computersystem get /?wmic computersystem call /?wmic computersystem set /?wmic /format /?を参照してください。 wmicは醜い行末(追加のキャリッジリターンがあります。現在のコンピュータ

for /f "skip=3" %A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %A 

そしてWMIC

for /f "skip=3 delims=\" %%A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %%A 
関連する問題