Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 根据批处理文件中的IF-ELSE条件设置不同的变量值_Windows_Batch File_If Statement_Cmd - Fatal编程技术网

Windows 根据批处理文件中的IF-ELSE条件设置不同的变量值

Windows 根据批处理文件中的IF-ELSE条件设置不同的变量值,windows,batch-file,if-statement,cmd,Windows,Batch File,If Statement,Cmd,我的目标是在x64机器上将%PF%变量设置为C:\ProgramFiles(x86)\MSBuild\并在x86机器上设置为C:\ProgramFiles\MSBuild\。 我可以很容易地做到这一点 IF DEFINED ProgramFiles(x86) SET PF=%ProgramFiles(x86)%\MSBuild\ IF NOT DEFINED ProgramFiles(x86) SET PF=%ProgramFiles%\MSBuild\ 但我想在一个IF-ELSE语句中这样做

我的目标是在x64机器上将%PF%变量设置为C:\ProgramFiles(x86)\MSBuild\并在x86机器上设置为C:\ProgramFiles\MSBuild\。 我可以很容易地做到这一点

IF DEFINED ProgramFiles(x86) SET PF=%ProgramFiles(x86)%\MSBuild\
IF NOT DEFINED ProgramFiles(x86) SET PF=%ProgramFiles%\MSBuild\
但我想在一个IF-ELSE语句中这样做

那个

IF DEFINED ProgramFiles(x86) (SET PF=%ProgramFiles(x86)%\MSBuild\) ELSE (SET PF=%ProgramFiles%\MSBuild\)
IF DEFINED ProgramFiles(x86) (SET PF="%ProgramFiles(x86)%\MSBuild\") ELSE (SET "PF=%ProgramFiles%\MSBuild\")
失败,出现异常“\MSBuild\”错误

那个

IF DEFINED ProgramFiles(x86) (SET PF=%ProgramFiles(x86)%\MSBuild\) ELSE (SET PF=%ProgramFiles%\MSBuild\)
IF DEFINED ProgramFiles(x86) (SET PF="%ProgramFiles(x86)%\MSBuild\") ELSE (SET "PF=%ProgramFiles%\MSBuild\")
运行时没有错误

但是结果值不是我所需要的(%ProgramFiles(x86)%\MSBuild\“-而不是“C:\ProgramFiles(x86)\MSBuild\”,例如在x64机器上)

那有可能吗?

使用以下语法:

SET "PF=%ProgramFiles(x86)%\MSBuild\"

注意引号的位置。

目前,您可以用Stephan的答案来解决您的问题,但是当您将代码嵌入到代码块中时,您也应该阅读,因为您将在
if defined ProgramFiles(x86)
Thx中遇到有关该信息的右括号问题