从另一个cmd.exe提示符下创建一个新的cmd.exe窗口


102

我正在设置CruiseControl.NET。我遇到的问题是我将CC作为控制台应用程序运行,并且当我的构建成功完成并执行(使用exec)时,它将在CruiseControl DOS提示符下启动它。我只是使用简单的批处理文件来启动我的应用程序,但是让它在与CC相同的提示下运行会导致CC认为只要我的应用程序运行,构建就可以继续。

是否有命令行参数cmd.exe会生成另一个单独的提示窗口?


1
cmd.exe是CUI外壳程序,而不是GUI。它不会创建窗口。它使用由控制台主机进程conhost.exe实例创建和管理的控制台窗口。如果CUI程序正常启动,则基本客户端DLL(kernel32.dll或kernelbase.dll)中的初始化代码将继承父级的控制台(如果有),或者分配一个新的控制台,除非它以创建标记启动DETACHED_PROCESS(即没有控制台)。 。如果它以创建标志CREATE_NEW_CONSOLE(如CMD的start用法)开头,则基本DLL总是分配一个新的控制台,而不是继承父控制台。
Eryk Sun

Answers:


201

我认为这可行:

start cmd.exe

5
确保您检出了所有用于启动“启动/?”的选项。/ wait和/ I可能有用。
Peter Gfader

46
首先,启动后甚至都不必放入“ cmd.exe”。只是“开始”这个词就能做到。
JustJeff

start / d <path>对于那些想要为新的cmd窗口设置路径的人。这里详细说明。
anton.mo

56

这是您需要的代码:

start cmd.exe @cmd /k "Command"

10
什么是@cmd做什么?是否有一些文档?
michas

1
@禁止通常会在提示符下显示的直接输出,但命令仍将执行。
Thielicious

我使用了它,它可以工作,但是如果尝试通过键盘中断ctrl + c杀死正在运行的程序,则正在运行的程序不会停止。仅当您关闭新打开的命令提示符窗口时,它才会停止。
Sachin G.

使用不适用于多行命令^。:(有什么方法可以解决?
user2173353

32

只需start在命令提示符下键入:

start

这将打开新cmd窗口。


22
start cmd.exe 

打开一个单独的窗口

start file.cmd 

打开批处理文件并在另一个命令提示符下执行


2

您可以在命令提示符下键入以下3条命令:

  1. start

  2. start cmd

  3. start cmd.exe


2
START "notepad.exe"
echo Will launch the notepad.exe application
PAUSE

要创建任何cmd文件类型,您要做的就是将内容另存为.bat,即

@echo
TITLE example.bat
PAUSE
taskkill/IM cmd.exe

将其放入“ example.bat”文件,保存,然后打开并运行。


1

简单地在您的bat文件中写入

@cmd

要么

@cmd /k "command1&command2"

4
感谢您&在新提示中执行多个命令。我喜欢添加,exit以便在命令完成运行后关闭提示。
Sylhare '17

0

我还尝试执行在CCNET任务结束时运行守护进程/服务器的批处理文件。使CruiseControl产生独立的异步进程而无需等待进程结束的唯一方法是:

  1. 创建一个批处理文件以运行守护进程(服务器应用程序)
  2. 使用任务计划程序将批处理文件作为CCNET任务运行(使用schtasks.exe)

    schtasks.exe /create /F /SC once /ST 08:50 /TN TaskName /TR "c:/path/to/batchFileName.bat"
    
    • HH:MM时间格式为08:50

您可能需要在ccnet开始时终止该进程

PS:使用“启动cmd.exe”选择的答案无效;确实会产生一个新的命令提示符,但是CCNET将等待所产生的cmd完成。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.