如何通过批处理文件执行cmd命令?

129

我希望编写一个批处理文件,按照给定的顺序执行以下操作:

  1. 打开cmd命令行
  2. 运行cmd命令 cd c:\Program files\IIS Express
  3. 运行cmd命令 iisexpress /path:"C:\FormsAdmin.Site" /port:8088 /clr:v2.0
  4. 使用URL=http://localhost:8088/default.aspxInternet Explorer 8中打开网页

注意:执行完命令后,不要关闭cmd窗口。

我尝试过start cmd.exe /k "cd\ & cd ProgramFiles\IIS Express",但它不能满足我的需求。


6
你面临的问题是什么? - argentum47
9个回答

140

因此,制作一个实际的批处理文件:打开记事本,输入您想要运行的命令,然后保存为 .bat 文件。然后双击 .bat 文件以运行它。

首先尝试类似于以下内容:

c:\
cd c:\Program files\IIS Express
start iisexpress /path:"C:\FormsAdmin.Site" /port:8088 /clr:v2.0
start http://localhost:8088/default.aspx
pause

1
感谢@Blorgbeard。它运作良好,除了第四行。它无法打开给定的网址。 - patel
浏览器是否打开? - Blorgbeard
哦,我想我知道发生了什么——看看我的编辑,我在“iisexpress”行前添加了“start”。 - Blorgbeard
@Blorgbeard,我正在尝试您的方法,使用"C:\Program Files\MongoDB\Server\3.3\bin\mongod.exe" --install --dbpath=C:\data\db --logpath=C:\data\log\log.txt --auth --service,但它不起作用。当我在CMD中执行此行时,一切正常。在这两种情况下,我都以管理员身份执行。请告诉我,我做错了什么? - Mike
4
@MikeB. 的意思是,start 命令会将第一个被引号包围的参数作为窗口标题。你可以尝试使用以下命令来安装 MongoDB 服务:start "" "C:\Program Files\MongoDB\Server\3.3\bin\mongod.exe" --install --dbpath=C:\data\db --logpath=C:\data\log\log.txt --auth --service - Stephan
请仅返回翻译后的文本。解释可能会有帮助。 - Sapnesh Naik

38

我认为正确的语法是:

cmd /k "cd c:\<folder name>"

7
非常好的选项 '/k'。这样即使按下CTRL+C,命令也不会退出。非常感谢 :-) - Pushpendra

20

这修复了一些与Blorgbeard的回答有关的问题(但未经测试):

@echo off
cd /d "c:\Program files\IIS Express"
start "" iisexpress /path:"C:\FormsAdmin.Site" /port:8088 /clr:v2.0
timeout 10
start http://localhost:8088/default.aspx
pause

12

使用cmd /c "command"语法效果很好。此外,如果您想包含一个路径中包含空格的可执行文件,则需要两组引号。

cmd /c ""path to executable""

如果您的可执行文件需要一个路径中包含空格的文件输入,则需要另一组

cmd /c ""path to executable" -f "path to file"" 

10
start cmd /k "your cmd command1"
start cmd /k "your cmd command2"

使用这些命令在一个批处理文件中,它可以在Windows Server 2012上运行。


没有引号也可以运行(也许这就是你的意思)。例如:start cmd /k [你的cmd命令1] - undefined

8
@echo off
title Command Executer
color 1b

echo Command Executer by: YourNameHere
echo #################################
: execute
echo Please Type A Command Here:
set /p cmd=Command:
%cmd%
goto execute

4
如何通过批处理文件执行CMD命令?技术上是正确的。 - Vivek Chavda
3
从技术角度来看,是正确的,但如果你在学校电脑上使用时,命令提示符可能被禁用,但批处理文件没有被禁用,这时这个方法正好可以满足你的需求。 - RetroCraft
1
我一直在寻找这个,所以很高兴你发布了这个内容,尽管它并不是原帖的要求 :) - dandeto

3

执行cmd /k cd c:\是正确的答案。


cmd /k "cd <需要执行 cmd 的路径(例如:c:\users\desktop\myFolder)> & <您的命令(例如:pm2 start)>" - Techdive

0

我试图在启动时并行运行一些批处理文件,如果条件成立。

为此,我制作了一个父批处理文件,应该检查条件并在条件成立时调用其他子批处理文件。

我尝试通过START实现它,但它给了我一个空的黑色命令提示符,在子批处理文件目录中运行,而不是运行子批处理文件本身。

对我起作用的是使用STARTCALL的组合。

例如:

condition ...

start call "C:\Users\Amd\conn\wsl_setup - conn1.bat"

start call "C:\Users\Amd\conn\wsl_setup - conn2.bat"

start call "C:\Users\Amd\conn\wsl_setup - conn3.bat"

start 命令将第一个引号内的参数作为窗口标题。只需给它一个虚拟标题(可以为空):start "" "c:\....\....bat" - Stephan

-10

我知道DOS和cmd提示符不喜欢文件夹名称中有空格。你的代码以

cd c:\Program files\IIS Express

开头,它试图进入c:\Program而不是C:\"Program Files"

更改文件夹名称和*.exe名称。希望这可以帮助到你。


改变文件夹名称?你一定是在开玩笑。 - Werner Henze
1
对于使用带有空格的参数的任何命令进行更正,但是“cd”除外。这是我知道的唯一一个可以不用引号而使用带有空格的参数的命令。 - Stephan
当你更改“程序文件”时...... xD。我同意Werner的看法。以下是发生的情况:硬编码文件位置的应用程序将不再工作,某些系统功能可能无法正常工作,您的系统会崩溃 - user6250760

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接