Batch file 尝试传递变量会添加额外的字符

Batch file 尝试传递变量会添加额外的字符,batch-file,environment-variables,Batch File,Environment Variables,几年前,我见过其他人提出这个问题,但他们似乎没有给出有效的答案 当我尝试在批处理文件中传递这两个命令时(手动完成时,它们可以工作): nltest/dsgetsite>c:\windows\temp\site.txt set/p CurrentADSitenltest/dsgetsite 1>c:\windows\temp\site.txt C:\working>set/p CurrentADSite 0根据您可能遗漏了an= “将文件的第一行放入变量: Set/P\u MyVar=根据您可能遗

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

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

nltest/dsgetsite>c:\windows\temp\site.txt
set/p CurrentADSitenltest/dsgetsite 1>c:\windows\temp\site.txt
C:\working>set/p CurrentADSite 0根据您可能遗漏了an=
“将文件的第一行放入变量:
Set/P\u MyVar=

根据您可能遗漏了一个=
“将文件的第一行放入变量:


Set/P\u MyVar=

您可以使用

for/f
来避免临时文件(而且您[通常]无法写入Windows目录,因此无论如何都会爆炸):


您可以使用
for/f
来避免临时文件(而且您[通常]无法写入Windows目录,因此无论如何都会爆炸):


这是一个问题,不是一个问题。Lasse,因为批处理文件、shell脚本和其他自动化语言都不是编程语言?我不同意。这是一个问题,不是一个问题。Lasse,因为批处理文件、shell脚本和其他自动化语言都不是编程语言?我不同意。有两个问题:第一,这不是倒退吗?我在填充bat后不应该设置站点吗?第二,>>附加。这会不会导致bat文件在每次运行时都变得越来越大,因为它附加了每次后续运行的结果?是的,不起作用。创建的bat文件不一致。它在第二行创建了实际变量:很抱歉,如果批处理文件在两行结束,这超出了我的控制范围!我用一些充满希望的东西编辑了我的答案:)。。。至于我的回退方法,当发出调用时,集合发生在第二个,第一个回显只是在批处理文本文件中放置一个命令,但直到调用它才执行。第二个问题:每次运行3命令时,echo都会将批处理文件清除回一个新文件,只有第二次写入批处理文件时才会追加。HTHY你必须使用
>site.cmd我很困惑。。乔伊,请你把那一行写完整好吗。很多感谢有两个问题:第一,这不是落后吗?我在填充bat后不应该设置站点吗?第二,>>附加。这会不会导致bat文件在每次运行时都变得越来越大,因为它附加了每次后续运行的结果?是的,不起作用。创建的bat文件不一致。它在第二行创建了实际变量:很抱歉,如果批处理文件在两行结束,这超出了我的控制范围!我用一些充满希望的东西编辑了我的答案:)。。。至于我的回退方法,当发出调用时,集合发生在第二个,第一个回显只是在批处理文本文件中放置一个命令,但直到调用它才执行。第二个问题:每次运行3命令时,echo都会将批处理文件清除回一个新文件,只有第二次写入批处理文件时才会追加。HTHY你必须使用
>site.cmd我很困惑。。乔伊,请你把那一行写完整好吗。非常感谢
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.
:: 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
for /f %%x in ('nltest /dsgetsite') do if not defined CurrentADSite set CurrentADSite=%%x