start指令运行完毕命令窗口不自动关闭

起因:

因为有一次性启动多个程序的需求,在bat脚本中使用了

start /d "pathdir" xxx.exe

powershell Start-Process "path"

来达到运行一个bat脚本,启动多个软件的作用

然而,其中一个用start命令启动的程序,会导致命令窗口不会自动关闭,关闭命令窗口也会导致此程序一并关闭,所以开始探究原因

bat脚本代码:

start /d "D:\直播\阿尔\QQ\石美丽\插件素材\karasubonk_bilibili-win32" karasubonk_bilibili.exe 
start /d "C:\Program Files (x86)\StarLiveLancher" StarliveLancher.exe
powershell Start-Process "D:\直播\livehime\livehime.exe" -Verb runAs

其中,第一行运行的程序导致命令窗口不会自动关闭

解决办法:

使用powershell Start-Process代替start /d

修改后的代码

powershell Start-Process -filepath "D:\直播\阿尔\QQ\石美丽\插件素材\karasubonk_bilibili-win32\karasubonk_bilibili.exe" 
start /d "C:\Program Files (x86)\StarLiveLancher" StarliveLancher.exe
powershell Start-Process "D:\直播\livehime\livehime.exe" -Verb runAs

-filepath指的是运行路径

-Verb runAs是用管理员权限运行

start /d后接的是运行目录

附:

start命令的使用方法

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]
  • "title"    在窗口标题栏中显示的标题。

  • path    启动目录。

  • B    启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断该应用程序的方式。

  • I    新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。

  • MIN    以最小化方式启动窗口。

  • MAX    以最大化方式启动窗口。

  • SEPARATE    在单独的内存空间中启动 16 位 Windows 程序。

  • SHARED    在共享内存空间中启动 16 位 Windows 程序。

  • LOW    在 IDLE 优先级类中启动应用程序。

  • NORMAL    在 NORMAL 优先级类中启动应用程序。

  • HIGH    在 HIGH 优先级类中启动应用程序。

  • REALTIME    在 REALTIME 优先级类中启动应用程序。

  • ABOVENORMAL    在 ABOVENORMAL 优先级类中启动应用程序。

  • BELOWNORMAL    在 BELOWNORMAL 优先级类中启动应用程序。

  • NODE    将首选非一致性内存结构 (NUMA) 节点指定为十进制整数。

  • AFFINITY    将处理器关联掩码指定为十六进制数字。进程被限制在这些处理器上运行。当 /AFFINITY 和 /NODE 结合时,会对关联掩码进行不同的解释。指定关联掩码,正如 NUMA 节点的处理器掩码正确移动到零位起始位置一样。进程被限制在指定关联掩码和 NUMA 节点之间的那些通用处理器上运行。如果没有通用处理器,则进程被限制在指定的 NUMA 节点上运行。

  • WAIT    启动应用程序并等待它终止。

  • command/program    如果它是内部 cmd 命令或批文件,则该命令处理器是使用 cmd.exe 的 /K 开关运行的。这表示运行该命令之后,该窗口将仍然存在。如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将作为一个窗口化应用程序或控制台应用程序运行。

  • parameters  这些是传递给 command/program 的参数。

注意:在 64 位平台上不支持 SEPARATE 和 SHARED 选项。

start使用转自:start 命令 - Bat 批处理教程

start-process命令:

start-process

Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-Credential <pscredential>] [-WorkingDirectory <string>] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError <string>] [-RedirectStandardInput <string>] [-RedirectStandardOutput <string>] [-WindowStyle {Normal | Hidden | Minimized | Maximized}] [-Wait] [-UseNewEnvironment] [<CommonParameters>][-Verb <string>]

-FilePath - 此参数用于指定在进程中运行的程序的文件名。输入与计算机上的程序相关联的文档文件或可执行文件的名称。

-ArgumentList - 参数指定cmdlet开始进程时要使用的参数及其值。

-Credential - 参数用于授予用户帐户执行该过程的权限。

-WorkingDirectory - 此参数用于指定在进程中执行的文件的位置。

-LoadUserProfile - 此cmdlet中使用此参数来加载Windows的用户配置文件,该配置文件存储在当前用户的HKEY_USERS注册表项中。

-NoNewWindow - 此参数在当前窗口的控制台中启动新进程。默认情况下,PowerShell打开一个用于执行新进程的新窗口。

-PassThru - 此参数返回由cmdlet启动的每个进程的对象。

-RedirectStandardError - 此参数将由进程创建的错误发送到指定的文件。使用此cmdlet时,需要输入文件的路径和名称。默认情况下,进程错误将显示在控制台上。

-RedirectStandardInput - 在命令中使用此参数时,进程可以从指定文件读取输入。要使用此参数,需要输入文件的路径和名称。默认情况下,进程从键盘读取输入。

-RedirectStandardOutput - 此参数将由进程创建的输出发送到指定的文件。 使用此cmdlet时,需要输入文件的路径和名称。 默认情况下,进程的输出显示在控制台上。

-WindowStyle - 此参数用于指定Windows状态,该状态用于新进程。以下是此参数可接受的值:

  • Hidden
  • Normal (默认值)
  • Maximized
  • Minimized

注意:不能在同一命令中同时使用参数NoNewWindowWindowStyle

-Wait - 此cmdlet中使用此参数来等待过程完成,然后再接受更多输入

转自:https://www.yiibai.com/powershell/powershell-start-process.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值