首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Win10批处理脚本:\Notepad++当时出乎意料

Win10批处理脚本:\Notepad++当时出乎意料
EN

Stack Overflow用户
提问于 2017-04-17 18:49:54
回答 1查看 324关注 0票数 0

此批处理文件提供标题中的错误:

代码语言:javascript
运行
复制
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
    echo FOOBAR
) else (
    set HOME_EDIT=%SystemDrive%\Program Files (x86)\Notepad++
)

这是在Win10 Pro x64系统上进行的(所以测试是假的)。

奇怪的是“设定HOME_EDIT.”如果行本身执行,则不会生成错误。几周前,这个批处理文件似乎工作正常(我知道,书中最古老的抱怨,但也许是最近的Win10 Creator更新被质疑了什么?)

以下是整个输出:

代码语言:javascript
运行
复制
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>
EN

回答 1

Stack Overflow用户

发布于 2017-04-17 19:32:22

回答我自己的问题:

@drescherjm是正确的(在评论中),当前的问题是在要设置的论点周围缺少引号("foo")。不知何故,当集合在IF语句内时,这很重要,即使是在其他情况下也是如此。

但是在我的批处理脚本中添加引号只是破坏了其他一些东西:

代码语言:javascript
运行
复制
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”的注释行):

代码语言:javascript
运行
复制
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以后也不会中断。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43457600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档