问题描述
我有一个 autohotkey 脚本,我需要使用自动化删除它上面的特定文件。它通过 USB 连接,我可以通过 This PC\myS21\Phone\...\data.txt
在文件资源管理器(Windows)中访问它。怎么用ahk删除这个文件?
我尝试简单地调用 FileDelete,path
,但是(据我所知)这不起作用,因为该文件不在计算机文件系统中。
解决方法
除了基于 UI 的解决方案,最好的 API 方式当然是使用 adb。而且adb不需要root,只需要在开发者选项中开启adb调试即可。
在 AHK 中运行 adb 文件删除命令:
Run,adb shell rm /sdcard/Download/data.txt
另一种方式是使用Windows系统提供的COM接口:
phone := GetDeviceFolder("Phone Name")
phone.ParseName("Internal Storage\Download\data.txt").InvokeVerb("delete")
GetDeviceFolder(deviceName) {
shell := ComObjCreate("Shell.Application")
computer := shell.Namespace("::{20d04fe0-3aea-1069-a2d8-08002b30309d}")
for item in computer.Items
if item.Name = deviceName
return item.GetFolder()
}
来源:https://www.autohotkey.com/boards/viewtopic.php?t=6395#p42773
,令人惊讶的是,这比我想象的要困难得多。据我所知,你必须:
- 安装adb
- 然后这将允许您使用命令来管理文件(我认为)
- 从 ahk 调用相关命令。
这是 a) 太多工作 b) 需要大量配置。有趣的是,我正在使用 ahk!
- 运行
start %systemroot%\explorer.exe
打开资源管理器
- 模拟按
f4
,然后在目录中“输入” - 模拟按
f3
,然后在要删除的文件中“输入” - 模拟
ctrl+a
- 模拟
delete
presto,您现在已经使用自动热键使用资源管理器删除了任何可以删除的文件。