我已经看到其他人在几年前解决了这个问题,但他们似乎没有给出合适的答案。
当我尝试在批处理文件中传递这两个命令时(它们在手动完成时可以工作):
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结果直接传递给变量?
答案 0 :(得分:1)
您可以使用for /f
来避免临时文件(您[通常]也无法写入Windows目录,因此无论如何都会爆炸):
for /f %%x in ('nltest /dsgetsite') do if not defined CurrentADSite set CurrentADSite=%%x
答案 1 :(得分: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