start /min cmd /k
的第一行在我看来完全没用。去掉它。
批处理文件由环境变量ComSpec中定义的应用程序执行。 ComSpec通常值C:\Windows\System32\cmd.exe
。命令start
是(现今)的内部命令cmd.exe
以作为单独的进程启动应用程序。
您可以使用start
再启动一个cmd.exe
,即使在完成此命令行进程启动的所有应用程序之后,仍可保持最小化窗口打开。因此,第一行所得到的是一个新的最小化命令提示符窗口,与等待用户输入无关。用于执行批处理文件中的命令的
cmd.exe
继续立即解析以mongod
开头的第二个命令行。
mongod
不是cmd.exe
的内部命令。因此mongod
被cmd.exe
解释为可执行文件的名称。
但是这个可执行文件的文件名没有文件扩展名,也没有路径。所以cmd.exe
必须搜索一个可执行文件。
环境变量PATHEXT包含用分号分隔的可执行文件的文件扩展名列表。这份名单现在是用来寻找mongod.com
或mongod.exe
或mongod.bat
或mongod.cmd
,...
所以,我对你的第一个建议是:与文件扩展名指定mongod
,即mongod.exe
由于没有文件路径,cmd.exe
首先在当前工作目录中搜索mongod.com
或mongod.exe
或...并且接下来在环境变量PATH中指定的所有目录中用分号分隔。
PATH包含的目录列表。但是,不仅有一个路径。系统路径和路径为当前用户帐户,因为它可以在advanced system settings in Windows control panel中看到之后点击按钮打开对话框查看和更改环境变量。
被所有应用程序使用的PATH是系统的组合PATH和使用的用户帐户PATH。
您收到错误消息
'mongod' is not recognized as an internal or external command, operable program or batch file
含有mongod.exe
目录要么在用户列出您的用户帐户的PATH,或可在当前工作目录上运行的批处理文件是由您手动发现。但mongod.exe
没有在系统指定的PATH也不路径中运行该批处理文件作为服务的帐户。如果在没有文件扩展名和文件路径的批处理文件中指定了Windows的标准应用程序,并且作为服务执行批处理文件的工作目录也是不同的,通常为C:\Windows\System32
以获得工作批处理文件。
的解决方案,因此是相当简单:
指定mongod.exe
完整路径和双引号,如果路径中包含一个或多个空格。
"C:\Program Files (x86)\whatever\mongod.exe" --dbpath "D:\weather_station\weather_data" --repair
"C:\Program Files (x86)\whatever\mongod.exe" --dbpath "D:\weather_station\weather_data"
如果mongod
是一个控制台应用程序,而不是一个GUI应用程序,并mongod
本身也没有启动一个单独的进程,然后立即终止在此之前独立完成程序后,你不需要任何东西。带有这两行的批处理文件就是您所需要的。
否则,你或许会需要:
start "Repair Data" /min /wait "C:\Program Files (x86)\whatever\mongod.exe" --dbpath "D:\weather_station\weather_data" --repair
start "..." /min /wait "C:\Program Files (x86)\whatever\mongod.exe" --dbpath "D:\weather_station\weather_data"
有关命令start
帮助一个命令提示符窗口help start
或start /?
进入。
正如书面批处理文件初学者挑战微软的文章command shell overview看看。