Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Batch file 批处理文件以“"\AEM在这个时候出人意料;_Batch File_Cmd - Fatal编程技术网

Batch file 批处理文件以“"\AEM在这个时候出人意料;

Batch file 批处理文件以“"\AEM在这个时候出人意料;,batch-file,cmd,Batch File,Cmd,我正在尝试执行一项检查,以查看文件是否存在于Program Files或Program Files(x86)目录中的子文件夹中,每次我的脚本都会出现\AEM,这在当时是意外的。 这是我的密码: :UPGRADECHK IF EXIST "C:\Program Files\AEM Keep Alive Service\AEMKeepAlive.exe" ( SET INSTALLDIR=C:\Program Files\AEM Keep Alive Service GOTO UPGRADE )

我正在尝试执行一项检查,以查看文件是否存在于Program Files或Program Files(x86)目录中的子文件夹中,每次我的脚本都会出现
\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的命令时,它似乎与x86路径有关。有人能解释为什么它失败了吗

您需要在安装目录路径周围加引号,因为文件名中有空格。与您在“存在”检查中所做的相同。像这样:

: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
)

您需要在安装目录路径周围加引号,因为文件名中有空格。与您在“存在”检查中所做的相同。像这样:

: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
)

你的set命令需要引号吗?在我的脚本的任何其他方面都没有包含,当我不能使用INSTALLDIR变量时,我会在其中加上引号:
%INSTALLDIR%”
忽略这一点,似乎它确实有效。奇怪…你的指令集需要引号吗?在我的脚本的任何其他方面都没有包含,当我不能使用INSTALLDIR变量时,我会在其中加上引号:
%INSTALLDIR%”
忽略这一点,似乎它确实有效。奇怪…谢谢,虽然它起作用了,但我还是不太明白为什么它不起作用,因为我正在将INSTALLDIR变量的值设置为路径。变量中可以有空格,这让我有点困惑。无论哪种方式,它现在都能工作,所以谢谢。:)这不是空格的问题,而是右括号的问题。如果要关闭命令行中的块,请尝试键入:
cd C:\Program Files
。因为路径中有空格,所以cd认为它被传递了两个参数:“C:\Program”和“Files”。为了让可执行文件知道它正在作为单个命令行参数传递该路径,它需要引号。@jeb括号没有问题。它们将包含在if构造中的语句括起来,if构造中有两个语句,因此这里需要括号,它们是正确的。这是错误的路径封闭。它在第一次检查时落在AEM上。括号可能会导致第二个构造中出现问题,但这将由字符串附件更正,如上所述。但最好使用
set
的扩展语法并移动引号
set“INSTALLDIR=C:\Program Files(x86)\AEM Keep Alive Service”
。第一个引号位于变量名前面。结果是,INSTALLDIR变量中没有引号。谢谢,虽然它起作用了,但我还是不太明白为什么它不起作用,因为我正在将INSTALLDIR变量的值设置为路径。变量中可以有空格,这让我有点困惑。无论哪种方式,它现在都能工作,所以谢谢。:)这不是空格的问题,而是右括号的问题。如果要关闭命令行中的块,请尝试键入:
cd C:\Program Files
。因为路径中有空格,所以cd认为它被传递了两个参数:“C:\Program”和“Files”。为了让可执行文件知道它正在作为单个命令行参数传递该路径,它需要引号。@jeb括号没有问题。它们将包含在if构造中的语句括起来,if构造中有两个语句,因此这里需要括号,它们是正确的。这是错误的路径封闭。它在第一次检查时落在AEM上。括号可能会导致第二个构造中出现问题,但这将由字符串附件更正,如上所述。但最好使用
set
的扩展语法并移动引号
set“INSTALLDIR=C:\Program Files(x86)\AEM Keep Alive Service”
。第一个引号位于变量名前面。结果是,INSTALLDIR变量中不存在引号