尝试传递变量会增加额外的字符

时间:2013-03-08 18:36:33

标签: batch-file environment-variables

我已经看到其他人在几年前解决了这个问题,但他们似乎没有给出合适的答案。

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

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结果直接传递给变量?

2 个答案:

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