1

几年前我见过其他人解决这个问题,但他们似乎没有给出有效的答案。

当我尝试在批处理文件中传递这两个命令时(它们在手动完成时工作):

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 回答