【问题标题】:How Can I Write a Batch File Where I Start one Program and When that Program Finishes or Closes, Start Another如何在启动一个程序的地方编写批处理文件,当该程序完成或关闭时,启动另一个程序
【发布时间】:2014-11-03 11:38:20
【问题描述】:

例如:

@echo off
start C:\Windows\system32\dfrgui.exe /C

等待碎片整理完成。

start C:\"Program Files (x86)"\CCleaner\CCleaner.exe /AUTO

等待 CCleaner 完成。

start C:\Windows\system32\cleanmgr.exe /sagerun:1

等等.. 你明白了。 我怎么能做到这一点? 谢谢。

【问题讨论】:

    标签: windows batch-file command-line windows-7


    【解决方案1】:

    Start 可以采用命令行参数 /WAIT 例如

    @echo off
    title Test cmd start
    
    start /WAIT wait.cmd 5
    start /WAIT cmd /k echo launched second command
    
    pause
    

    这个简单的示例使用我编写的另一个脚本(如下所示的 wait.cmd)作为执行的第一个命令,如果您使用指定的 /WAIT 选项进行测试,您将看到该脚本允许第一个命令在继续之前完成:

    @echo off
    rem call with # of seconds to wait
    
    set /a secs=%1
    set /a ms=%secs%*1000
    echo Process will wait for %secs% seconds and then continue...
    ping 1.1.1.1 -n 1 -w %ms% > nul
    echo.
    exit
    

    作为旁注,如果您打开 cmd 会话,您可以了解 start 等命令接受的参数,例如


    更新以下评论

    因此,要调整您在问题中列出的命令,以便在开始脚本中的下一个命令之前完成,您可以使用:

    @echo off
    start /WAIT C:\Windows\system32\dfrgui.exe /C
    start /WAIT C:\"Program Files (x86)"\CCleaner\CCleaner.exe /AUTO
    start /WAIT C:\Windows\system32\cleanmgr.exe /sagerun:1
    

    【讨论】:

    • 那么每个命令之间有5秒的时间,是不是有办法在程序结束的时候继续?
    • wait.cmd 程序只是一个示例使用(5 秒足以清楚地看到第一个程序在第二个程序开始之前完成)。您可以在命令中使用 /WAIT 参数而不是 wait.cmd 例如start /WAIT C:\Windows\system32\dfrgui.exe /C 将运行碎片整理,直到完成,然后继续执行脚本。
    • 我还添加了我的答案以澄清。
    • 非常感谢,正是我想要的,只是一个题外话问题,为什么 Disk Defragmenter 不会开始对磁盘 C 进行碎片整理,我的论点是错误的吗?
    • @Giancarlo 没问题,只需查找碎片整理语法,您可以使用碎片整理命令(从任何目录),例如使用defrag /? 查看选项。这里还有更多详细信息:technet.microsoft.com/en-us/magazine/ff458356.aspx
    猜你喜欢
    • 1970-01-01
    • 2013-08-20
    • 2016-05-24
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多