此批处理文件提供标题中的错误:
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
echo FOOBAR
) else (
set HOME_EDIT=%SystemDrive%\Program Files (x86)\Notepad++
)
这是在Win10 Pro x64系统上进行的(所以测试是假的)。
奇怪的是“设定HOME_EDIT.”如果行本身执行,则不会生成错误。几周前,这个批处理文件似乎工作正常(我知道,书中最古老的抱怨,但也许是最近的Win10 Creator更新被质疑了什么?)
以下是整个输出:
U:\Users\Dave\data\PC setup\2017-03 PC Setup for Win10>test.bat
\Notepad++ was unexpected at this time.
U:\Users\Dave\data\PC setup\2017-03 PC Setup for Win10> set HOME_EDIT=C:\Program Files (x86)\Notepad++
U:\Users\Dave\data\PC setup\2017-03 PC Setup for Win10>
发布于 2017-04-17 19:32:22
回答我自己的问题:
@drescherjm是正确的(在评论中),当前的问题是在要设置的论点周围缺少引号("foo")。不知何故,当集合在IF语句内时,这很重要,即使是在其他情况下也是如此。
但是在我的批处理脚本中添加引号只是破坏了其他一些东西:
set NEW_PATH=%HOME_WINDOWS%
set NEW_PATH=%NEW_PATH%;%BinPath%
set NEW_PATH=%NEW_PATH%;%BinPath%\ffmpeg\bin
set NEW_PATH=%NEW_PATH%;%BinPath%\mplayer
set NEW_PATH=%NEW_PATH%;%BinPath%\gui
set NEW_PATH=%NEW_PATH%;%BinPath%\dll
set NEW_PATH=%NEW_PATH%;%HOME_CYGWIN%\bin
set NEW_PATH=%NEW_PATH%;%HOME_CYGWIN%\sbin
set NEW_PATH=%NEW_PATH%;%HOME_CYGWIN%\usr\bin
set NEW_PATH=%NEW_PATH%;%HOME_CYGWIN%\usr\sbin
set NEW_PATH=%NEW_PATH%;%HOME_7ZIP%
set NEW_PATH=%NEW_PATH%;%HOME_EDIT%
set NEW_PATH=%NEW_PATH%;%HOME_DIFF%
set Path=%NEW_PATH%
setx Path "%NEW_PATH%"
如果HOME_EDIT中有引号,这将导致SETX失败。
下面是我想出的修复方法(标记为“TRICK1”的注释行):
REM The following is a trick to get around spaces in the path (TRICK1)
set HOME_EDIT=%SystemDrive%\%ProgramFiles(x86)%\Notepad++
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
set HOME_CYGWIN=%SystemDrive%\cygwin
set HOME_EDIT=%SystemDrive%\Program Files\Notepad++
) else (
set HOME_CYGWIN=%SystemDrive%\cygwin64
REM (TRICK1 rem this out) set HOME_EDIT=%SystemDrive%\%ProgramFiles(x86)%\Notepad++
)
在输入IF语句之前,其中包含空格的路径设置为默认值。这样就不需要引号,SETX以后也不会中断。
https://stackoverflow.com/questions/43457600
复制相似问题