批处理文件:如何保持控制台窗口打开

111

我有两个批处理文件,其中一个执行另一个批处理文件,即:

  1. "我的批处理文件" > 2. "另一个批处理文件"

我创建了第一个批处理文件的快捷方式,并编辑了其属性,以以下方式调用它。

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

我想做什么

执行完批处理文件后,我希望控制台窗口保持打开状态。现在它只是关闭了,我尝试使用cmd标志进行调整,但没有结果。

平台: Windows7


更新1

修改了结构,这个简单的示例也无法正常工作, 只有一个批处理文件,即没有第二个"其他批处理文件" 唯一的批处理文件包含如下内容:

start /B /LOW /WAIT make package
cmd /K

更新2

从资源管理器中调用的相同快捷方式不会关闭控制台窗口。但是当从任务栏上的固定项调用该快捷方式时,控制台窗口会关闭。

有什么想法可以使控制台窗口保持打开状态吗?


我猜你想让“我的批处理文件”保留下来? - Marc B
“如何保持批处理文件的控制台窗口打开”在这里得到了更清晰的解答:http://superuser.com/questions/175515/is-there-a-way-in-windows-7-to-create-a-shortcut-to-a-command-line-console-app - oberlies
9个回答

130

如果批处理文件真的只是做这些事情,那就删掉cmd /K然后添加PAUSE

start /B /LOW /WAIT make package
PAUSE

然后,只需将您的快捷方式指向"My Batch File.bat"...无需使用CMD / K运行它。

更新

啊,一些新消息... 您正在尝试从任务栏上的固定快捷方式执行此操作。

我在这里找到了添加批处理文件到Windows 7任务栏,就像Vista/XP快速启动一样,下面是相关部分。

  1. 首先,通过点击开始按钮,然后在搜索框中键入“cmd”,右键单击结果并选择“将其固定到任务栏”来钉住CMD.EXE的快捷方式。
  2. 右键单击任务栏上的快捷方式。
  3. 你���看到一个包括“命令提示符”和“从任务栏取消固定此程序”的列表。
  4. 右键单击CMD.EXE图标,并选择属性
  5. 在目标框中,转到"%SystemRoot%\system32\cmd.exe"的末尾,键入" /C "和批处理文件的路径和名称。

为了您的目的,您可以选择:

  1. 使用/C并在批处理文件的末尾放置一个PAUSE

    或者

  2. 更改命令行以使用/K并从批处理文件中删除PAUSE

我已经完成了,基本上我的问题不是如何调用另一个批处理文件... - deimus
然后我们需要查看两个批处理文件的内容。 - aphoria
请查看更新后的问题。 - deimus
相同的问题,替换CMD / K无效。如果从资源管理器中调用快捷方式,为什么控制台窗口不会关闭? - deimus

15
问题出在这里:
cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

看看你在做什么:
1. (cmd /K) 启动一个新的 cmd 实例。 2. (& pause) 暂停当前的 cmd 实例。
如何解决呢?嗯,使用正确的语法,将参数括起来以创建新的 CMD 实例。
cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"

6
我刚刚将最后一行写成了 Pause,无论是.bat还是.cmd都可以正常工作。它还会显示消息,“按任意键继续”。

1
这是正确的答案!应该是最高票数的。 - Patrick Hillert

5
在你想要保持打开的批处理文件的最后一行,添加以下代码:

pause >nul

这将使程序暂停执行,直到用户按下任意键。

听起来好像是提前关闭了,也许是脚本中的错误。尝试打开一个命令提示符并从那里运行它,这样你就可以看到是否有任何错误。 - Bali C

3

如果您希望保持控制台窗口打开,只需在批处理文件中的最后一个命令行添加以下内容:

' & pause'

2
您可以在批处理文件的最后一行中加入一个pause命令:
@echo off
echo Hey, I'm just doing some work for you.
pause

执行该命令将会输出以下内容:

嗨,我正在为您处理一些任务。

按任意键继续...

注意:使用@echo可以避免在输出打印之前先输出命令。


0
rem Just use "pause" at the end of the batch file.
...
......
.......
pause

-1
将其放在结尾,它会重新打开你的控制台。
start cmd 

这并没有解决问题,用户想要保持窗口打开,而不是重新打开旧的窗口。 - Adam

-5

我只需按下回车键,输入“暂停”,它就可以正常工作。


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