gpt4 book ai didi

powershell如何关闭.exe进程

转载 作者:行者123 更新时间:2023-12-02 08:25:46 24 4
gpt4 key购买 nike

我想从 powershell 启动一个 .exe 文件并等待它完成,然后继续 powershell 中的下一行。然而,在 .exe 文件完成它的工作后,窗口仍然存在以手动关闭。就像记事本一样。这是我得到的

start-process -FilePath notepad -Wait -NoNewWindow
echo "it's done!"

我指定了 -NoNewWindow 但它仍然带有一个窗口并且 powershell 必须等到我手动关闭它。我怎样才能自动关闭它? .exe 文件是我无法控制的第三方应用程序。

请注意,我想等待 .exe 文件完成任务,然后自动关闭该窗口,以便我可以继续 powershell 中的下一行。

我也试过 -WindowStyle 隐藏。

start-process -FilePath notepad -Wait -WindowStyle hidden
echo "it's done!"

但更糟糕的是,我不得不去任务管理器杀死隐藏的窗口,而不知道它是否完成。

有没有比 -NoNewWindow 更好的参数可以强制不显示新窗口?

谢谢,

最佳答案

下面的脚本将:

  1. 打开记事本。
  2. 等待您输入“已完成”。
  3. 关闭记事本。

您需要安装 AutoIt . (顺便说一句,我在安装程序中选择了“x86”。)

您还需要调整 Get-AU3ControlHandle 调用以满足您的需要。 AutoIt 窗口信息工具在那里很有用。您可能需要阅读 AutoIt 文档。

另见 AutoIt Cmdlets for Windows PowerShell .

import-module "${env:ProgramFiles(x86)}\AutoIt3\AutoItX\AutoItX.psd1"
$p = Start-Process notepad -PassThru

# Wait for the window to open
while($p.MainWindowHandle -eq 0)
{
Start-Sleep 1
}

$c = Get-AU3ControlHandle -WinHandle $p.MainWindowHandle -Control "Edit1"

while($true)
{
$t = Get-AU3ControlText $p.MainWindowHandle $c

if ($p.HasExited)
{
break;
}
elseif ($t -eq "Finished")
{
$p.CloseMainWindow();
break;
}
else
{
Write-Output "Waiting 1 sec."
Start-Sleep 1
}
}

Write-Output "Done"

关于powershell如何关闭.exe进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32386017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com