1

他の人が数年前にこれに取り組んでいるのを見たことがありますが、彼らは有効な答えを出していないようです.

これら2つのコマンドをバッチファイルに渡そうとすると(手動で行うと機能します):

nltest /dsgetsite>c:\windows\temp\site.txt 
set /p CurrentADSite<c:\windows\temp\site.txt

しかし、バッチファイルを介してコマンドを発行しようとすると、次のようになります。

C:\working>nltest /dsgetsite  1>c:\windows\temp\site.txt

C:\working>set /p CurrentADSite  0<c:\windows\temp\site.txt
The syntax of the command is incorrect.

これを実際に機能させるにはどうすればよいですか?dsgetsite の結果を直接変数に渡す簡単な方法はありますか?

4

2 に答える 2

1

一時ファイルを回避するために使用できfor /fます(また、[通常] Windowsディレクトリに書き込むことができないため、とにかく爆発します):

for /f %%x in ('nltest /dsgetsite') do if not defined CurrentADSite set CurrentADSite=%%x
于 2013-03-08T19:21:34.587 に答える
0

http://ss64.com/nt/set.htmlによると
、「ファイルの最初の行を変数に配置するには:
Set /P _MyVar=<MyFilename.txt」= を見逃している可能性があります。

他のすべてが失敗した場合は、いつでも頼ることができます:

:: start the temp batch with start of set command
echo set CurrentADSite=>c:\windows\temp\site.bat
:: add to the temp bat : the variable assignment
nltest /dsgetsite>>c:\windows\temp\site.bat
:: run the temp batch and return here
call c:\windows\temp\site.bat
于 2013-03-08T19:03:03.960 に答える