文章讲述了在bat脚本中使用start/d命令启动多个程序时遇到的问题,即其中一个程序会阻止命令窗口关闭。作者发现使用powershell的Start-Process命令可以避免这个问题,并提供了修改后的脚本和start命令的详细使用说明。 摘要由CSDN通过智能技术生成

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

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

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

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

#1 一: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H: net use h
命令 简介 Windows 命令 提示符(cmd.exe)是 Windows NT 下的一个用于 运行 Windows 控制面板程序或某些 DOS 程序的shell程序;或在 Windows CE 下只用于 运行 控制面板程序的外壳程序。cmd 指令 有很多,使用用途也很广! cmd是command的缩写.即 命令 行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它 运行 安全、稳定,有的用户还在使用,所以一般Windows 的各种版本都与其兼容,用户可以在W
pip search&ERROR: XMLRPC request failed [code: -32500] RuntimeError: PyPI‘s XMLRPC API is ERROR: XML