Directory 命令(批处理)文件-在目录名周围使用引号
我在另一个StackOverflow问题中发现了下面的技术。它获取正确的“Program Files”目录名,无论该文件在32位或64位版本的Windows上运行 我怎样才能避开下面的问题。如果我没有在%programfiles%周围加上双引号,我会在集合中得到一个错误Directory 命令(批处理)文件-在目录名周围使用引号,directory,batch-file,quotes,Directory,Batch File,Quotes,我在另一个StackOverflow问题中发现了下面的技术。它获取正确的“Program Files”目录名,无论该文件在32位或64位版本的Windows上运行 我怎样才能避开下面的问题。如果我没有在%programfiles%周围加上双引号,我会在集合中得到一个错误 set BTDFProgFiles=%programfiles(x86)% if %BTDFProgFiles%=="" set BTDFProgFiles=%programfiles% echo BTDFProgFiles=%
set BTDFProgFiles=%programfiles(x86)%
if %BTDFProgFiles%=="" set BTDFProgFiles=%programfiles%
echo BTDFProgFiles=%BTDFProgFiles%
%BTDFMSBuildPath% "%BTDFProgFiles%\FRB.EC.Common\%2\Deployment\FRB.EC.Common.BizTalk.Deployment.btdfproj" etc...
如果我在那里加上双引号,SET语句可以工作,但是构建程序的parm显示为两个parm:
set BTDFProgFiles="%programfiles(x86)%"
if %BTDFProgFiles%=="" set BTDFProgFiles="%programfiles%"
echo BTDFProgFiles=%BTDFProgFiles%
%BTDFMSBuildPath% "%BTDFProgFiles%\FRB.EC.Common\%2\Deployment\FRB.EC.Common.BizTalk.Deployment.btdfproj" etc...
解释为:
“C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBu
ild.exe“C:\Program Files”\FRB.EC.BookTransfer\1.1\Deployment\FRB.EC.BookTransf
er.BizTalk.Deployment.btdfproj等
MSBuild认为我试图通过不止一个项目。;
MSBUILD:错误MSB1008:只能指定一个项目。您应该使用引号,但使用的方式略有不同
set var=“my quoted string”
将var设置为“my quoted string”
设置“var=my quoted string”
将var设置为my quoted string
第二个方法可以在不添加引号的情况下引用字符串 为了安全地回显字符串而不使用引号,可以使用延迟扩展 所以你的代码应该改成
setlocal EnableDelayedExpansion
set "BTDFProgFiles=%programfiles(x86)%"
if "%BTDFProgFiles%"=="" set "BTDFProgFiles=%programfiles%"
echo BTDFProgFiles=!BTDFProgFiles!
"%BTDFMSBuildPath%" "%BTDFProgFiles%\FRB.EC.Common\%2\Deployment\FRB.EC.Common.BizTalk.Deployment.btdfproj"