-1

サーバー名でいっぱいのtxtファイルがあります-1行に1つの名前。そのファイルの内容を読み取り、サーバー名を変数に割り当て、いくつかのコマンドを完了してから、次のサーバー名に対してもう一度実行する必要があります。ここに私がこれまでに持っているものがあります:

for /f "tokens=*" %%a in (%UserProfile%\Desktop\servers.txt) do (
    set server=%%a 
    set loc=%UserProfile%\Desktop\GPOResult_%server%
    gpresult /S %server% /H %loc% /F
)

そして、エコーをオフにしたときに得られる出力は次のとおりです。

(
set server=<ServerName>
set loc=C:\Users\<user>\Desktop\GPOResult_
gpresult /S /H /F
)
ERROR: Invalid syntax. Value expected for '/S'
Type "GPRESULT /?" for usage.

したがって、私の主な問題は、何らかの理由で変数が固執していないことだと思います。提供できるヘルプは大歓迎です!

みんなありがとう

4

2 に答える 2

1

これを試して

 Setlocal EnableDelayedExpansion
 for /f "tokens=*" %%a in (%UserProfile%\Desktop\servers.txt) do (
   set server=%%a 
   set loc=%UserProfile%\Desktop\GPOResult_!server!
   gpresult /S !server! /H !loc! /F
 )

for ブロック内に変数を設定するときはいつでも、遅延展開を使用してそれを読み取る必要があります。

于 2013-05-07T17:50:36.327 に答える