gpt4 book ai didi

windows - 命令不在 .BAT if 语句中执行

转载 作者:可可西里 更新时间:2023-11-01 11:48:53 24 4
gpt4 key购买 nike

我有一个批处理文件,它将检查 CPU 架构(32 位或 64 位),并相应地执行命令。它将找到特定的文件夹并执行某些 .exe 文件。我的问题是,如果我在 if 语句中有一个语句,例如。 'echo Some text',它会显示正常,这意味着对架构的检查没有问题。但是只要我的 If 语句中有多个命令,批处理文件就会立即退出。到目前为止我的代码:

@echo off

SET "ARCH=x64"
IF NOT EXIST "%SystemRoot%\SysWOW64\cmd.exe" (
IF NOT DEFINED PROCESSOR_ARCHITEW6432 SET "ARCH=x86"
)
IF "%ARCH%"=="x64" (
cd \
cd Program Files (x86)\MySQL\MySQL Installer for Windows
start /wait MySQLInstallerConsole community install server;5.6.26;x64:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=somepass -silent

cd \
cd Program Files (x86)\Location
start /wait DatabaseConfig
) ELSE (
cd \
cd Program Files\MySQL\MySQL Installer for Windows
start /wait MySQLInstallerConsole community install server;5.6.26;x86:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=somepass -silent

cd \
cd Program Files\Location
start /wait DatabaseConfig
)

pause

如果我让命令从 if 语句之外独立运行,如下所示,它工作正常。

cd \
cd Program Files (x86)\MySQL\MySQL Installer for Windows
start /wait MySQLInstallerConsole community install server;5.6.26;x64:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=somepass -silent

cd \
cd Program Files (x86)\Location
start /wait DatabaseConfig

最佳答案

这是因为 Program Files (x86) 路径中的括号。右括号被视为 IF 命令的一部分。试试这个(路径用双引号引起来):

@echo off

SET "ARCH=x64"
IF NOT EXIST "%SystemRoot%\SysWOW64\cmd.exe" (
IF NOT DEFINED PROCESSOR_ARCHITEW6432 SET "ARCH=x86"
)
IF "%ARCH%"=="x64" (
cd \

cd "Program Files (x86)\MySQL\MySQL Installer for Windows"
start /wait MySQLInstallerConsole community install server;5.6.26;x64:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=somepass -silent

cd \
cd "Program Files (x86)\Location"
start /wait DatabaseConfig
) ELSE (
cd \
cd "Program Files\MySQL\MySQL Installer for Windows"
start /wait MySQLInstallerConsole community install server;5.6.26;x86:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=somepass -silent

cd \
cd "Program Files\Location"
start /wait DatabaseConfig
)

pause

关于windows - 命令不在 .BAT if 语句中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com