gpt4 book ai didi

powershell - 通过改变 ID 或文件名关闭资源管理器窗口

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

我已经在这些论坛上搜索了几个小时,试图找出一种方法来编写一些我认为比这更简单的东西。

所以这就是我想要做的:
我的任务调度程序每两天运行一个脚本。该脚本打开一个 explorer.exe文件夹的路径,然后删除该文件夹中的所有文件。当我不在办公室时,调度程序会在晚上运行脚本。但是,当我进入办公室时,资源管理器窗口会打开该页面。微不足道,我知道 - 但我不想看到那个窗口打开,所以我希望脚本运行,然后关闭窗口,所以我什么也没看到。

我已经试过这种方法了。当我尝试做一些简单的事情时

$var1 = invoke-item C:\path\file
$var1.quit()

或者
$var1.close()

但是当我这样做时,我收到一条错误消息,指出该变量为空。

然后我尝试停止该过程。但我不希望关闭所有资源管理器文件,只关闭特定的资源管理器窗口。所以为了做到这一点,我必须知道窗口的 ID。但由于该特定窗口的 ID 不是静态的,我需要获取进程 ID - 将其分配给一个变量 - 然后使用 stop-process cmdlet 使用该变量。

这就是我现在正在尝试的:
get-process | where-object {$_.MainWindowTitle -eq "filename"} | select -property id | $var2

但是,当我运行此脚本时,它仍然说该变量为空。

那么如何给变量赋值呢?或者如果有人有关闭特定窗口的更好方法。

(我已经尝试使用 stop-process 只使用 mainwindowtitle - 但它仍然需要一个 id)

最佳答案

如果你真的想关闭一个特定的文件资源管理器窗口,那么你需要使用 Shell.Application .列表打开文件资源管理器窗口:

$shell = New-Object -ComObject Shell.Application
$shell.Windows() | Format-Table Name, LocationName, LocationURL

Name LocationName LocationURL
---- ------------ -----------
File Explorer Windows file:///C:/Windows
File Explorer folder file:///C:/path/folder

我想关闭 c:\path\folde 中的那个,所以让我们找到它并关闭它:
$shell = New-Object -ComObject Shell.Application
$window = $shell.Windows() | Where-Object { $_.LocationURL -like "$(([uri]"c:\path\folder").AbsoluteUri)*" }
$window | ForEach-Object { $_.Quit() }

但是,正如评论中所提到的,您将其复杂化了。 PowerShell 的重点是使其自动化,这通常意味着您根本不想使用 GUI。我不确定您要删除或保留什么等,但您可以使用以下示例:
#Get contents of folder (not recursive)
Get-ChildItem -Path 'c:\path\folder' |
#Only files
Where-Object { !$_.PSIsContainer } |
#Remove...
Remove-Item

关于powershell - 通过改变 ID 或文件名关闭资源管理器窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36992333/

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