【发布时间】:2015-05-03 18:35:15
【问题描述】:
我正在尝试编写一个窗口批处理文件来连续执行多个任务,但是,它总是在脚本中绑定第一个命令后停止。 我正在使用这个批处理文件代码:
start cmd /k cd %CD%mysql\bin && mysqld --install
我想使用这个批处理文件命令并安装 MySQL,但它只运行一个命令
【问题讨论】:
标签: mysql batch-file cmd window
我正在尝试编写一个窗口批处理文件来连续执行多个任务,但是,它总是在脚本中绑定第一个命令后停止。 我正在使用这个批处理文件代码:
start cmd /k cd %CD%mysql\bin && mysqld --install
我想使用这个批处理文件命令并安装 MySQL,但它只运行一个命令
【问题讨论】:
标签: mysql batch-file cmd window
您的批处理文件中有以下命令:
start cmd /k cd %CD%mysql\bin && mysqld --install
让我们把它分解成更小的部分。
start 启动程序、命令或批处理脚本(在新窗口中打开。)cmd /k cd %CD%mysql\bin 运行`cd %CD%mysql\bin 然后返回cmd提示符。&& 如果以上成功则运行下一条命令mysqld --install 如果start cmd /k cd %CD%mysql\bin 成功则运行mysqld --install
第二部分永远不会运行,因为第一部分返回到命令提示符。
改用以下批处理文件:
cd %CD%mysql\bin
mysqld --install
注意变量 CD 必须分配一个合理的值,否则cd %CD%mysql\bin 将失败。
【讨论】:
您似乎在这里有很多层:start 和 cmd /c(我认为您更喜欢在批处理文件中使用 cmd /k)。
cd %CD%\mysql\bin && mysqld --install 有什么问题?当我尝试运行 notepad.exe 时,这对我来说效果很好:cd /d %WINDIR%\System32 && notepad(请注意此处的附加 '\' 字符,以防万一......如果 env var CD 已经有一个额外的反斜杠,则不会造成伤害)。就此而言,我敢打赌 %CD%\mysql\bin\mysqld --install 会工作得很好。
但是,以防万一您需要额外的功能 - 或者更有可能需要它用于您未显示的其他功能。只使用cmd:
cmd /c "cd %CD%\mysql\bin && mysqld --install"
只使用start:
start "" "cd %CD%\mysql\bin && mysqld --install"
我会使用start 和cmd 提出解决方案,但您不需要它。
顺便说一句,如果您不能直接调用%CD%\mysql\bin\mysqld --install,我会考虑使用pushd 而不是cd,这样您就可以在整个脚本的末尾调用popd ...将您的脚本用户放回他们开始的目录是一种很好的形式。
【讨论】: