2016-07-29 66 views
0

我试图执行检查以查看程序文件或程序文件(x86)目录中的子文件夹中是否存在文件,并且每一个那时,我的剧本突然出现许多\AEM was unexpected at this time.批处理文件出现“ AEM此时出乎意料”

这里是我的代码:

:UPGRADECHK 
IF EXIST "C:\Program Files\AEM Keep Alive Service\AEMKeepAlive.exe" (
SET INSTALLDIR=C:\Program Files\AEM Keep Alive Service 
GOTO UPGRADE 
) 

IF EXIST "C:\Program Files (x86)\AEM Keep Alive Service\AEMKeepAlive.exe" (
SET INSTALLDIR=C:\Program Files (x86)\AEM Keep Alive Service 
GOTO UPGRADE 
) 

我使用%PROGRAMFILES%%PROGRAMFILES(x86)%系统变量和完整的路径,但每一次尝试,我得到了同样的错误。运行命令@Echo On它似乎是它遇到问题的x86路径。任何人都可以提出为什么它失败?

+0

你需要在你设置的命令中的引号 – jeb

+0

真的吗?没有包括在我的脚本的任何其他方面,当我cann the INSTALLDIR变量,我包括引号,然后:'“%INSTALLDIR%”' – Rawns

+0

忽略这一点,似乎确实奏效。奇怪... – Rawns

回答

2

由于文件名中有空格,因此您需要在安装目录路径中加上引号。和你在存在的检查中一样。像这样:

:UPGRADECHK 
IF EXIST "C:\Program Files\AEM Keep Alive Service\AEMKeepAlive.exe" (
    SET INSTALLDIR="C:\Program Files\AEM Keep Alive Service" 
    GOTO UPGRADE 
) 

IF EXIST "C:\Program Files (x86)\AEM Keep Alive Service\AEMKeepAlive.exe" (
    SET INSTALLDIR="C:\Program Files (x86)\AEM Keep Alive Service" 
    GOTO UPGRADE 
) 
+0

谢谢,虽然它的工作,但我还是不明白为什么它不工作,因为我将INSTALLDIR变量的值设置为路径。变量可以有空格,所以它会引起我一些注意。无论哪种方式,它现在的作品,所以谢谢。 :) – Rawns

+1

这不是空间问题,它是右括号的问题。关闭块 – jeb

+0

在命令行上,输入:cd cd:\ Program Files。它不会工作,因为路径中有空格,所以cd认为它传递了两个参数:“C:\ Program”和“Files”。为了让可执行文件知道它是作为单个命令行参数传递的,它需要引号。 – ManoDestra