以编程方式解锁或删除锁定的文件夹

以编程方式解锁或删除锁定的文件夹

1. 总结

我找不到如何通过命令行界面解锁或删除带有所有子文件夹的锁定文件夹。


2. 论证

我正在做这个项目。例如,我的源文件夹 — sources,输出文件夹 — output。我查看文件和/或进行测试更改output→ 我添加更改sources→ 我运行构建命令(build例如),它应该覆盖output。但build无法正确启动:

文件夹正在使用

文件夹正在使用

无法完成该操作,因为该文件夹或其中的文件已在另一个程序中打开

关闭文件夹或文件并重试

因此,每次build启动之前我都会打开LockHunter→解锁output→运行build

如果可以output先运行命令来解锁或删除build,那就太好了,这样我就不需要每次都手动运行 LockHunter,花费时间了。


3. MCVE

我创建了一个文件夹KiraUnlockCLI→ 打开命令提示符 → 移动到KiraUnlockCLI其中 ( cd KiraUnlockCLI) →KiraUnlockCLI锁定:

文件夹已锁定

我需要KiraUnlockCLI以编程方式解锁或删除。


4. 要求

  1. 任何类型的程序都可以锁定output文件夹和/或其中的文件,例如:

    1. Windows资源管理器
    2. 命令提示符
    3. 文本编辑器
    4. 浏览器
    5. 图片查看器
  2. 解决方案必须解锁文件夹,而不仅仅是文件。我可以在第三方程序中打开文件夹output及其子文件夹中的任何文件。

  3. 必须支持相对路径。output对我、另一位开发人员和持续集成(Travis CI、AppVeyor)来说位于不同的目录中。

5. 没有帮助

5.1. 相对路径

  1. 锁猎人不支持相对路径。

    2019 年 9 月初,我写了一篇问题→ 我讲述了我的问题LockHunter 反馈表→ 我还没有收到任何反馈。

5.2. 文件夹支持

这些程序可以解锁文件,但不能解锁文件夹。

  1. 文件刺客

    FileASSASSIN /unlock /silent KiraUnlockCLI
    
  2. 忙删除

5.3. 具体PID

  1. 处理— 解锁所需的 PID。但我需要终止具有任何 PID 的进程;请参阅我的问题的 4.1 项。

5.4. 图形用户界面

我找不到有关这些程序的命令行界面的任何信息:

  1. IObit 解锁器
  2. 解锁 IT

5.5. 不起作用

  1. rm -rf KiraUnlockCLIrm操作系统):

    /usr/bin/rm: cannot remove 'KiraUnlockCLI`: Device or resource busy
    
  2. 打开文件视图— 执行此命令无效:

    openedfilesview /closefolder closeprocess killprocess KiraUnlockCLI
    
  3. 谁锁我 在 Windows 10 中不起作用

  4. 解锁者unlocker D:\SashaDebugging\KiraUnlockCLI

    解锁者

    未找到锁定手柄。

    但是Unlocker可以帮你处理这个对象。

    选择您想要对对象执行的操作。

  5. 僵局无法通过命令行界面解锁文件夹。请参阅我的问题到 DeadLock 问题跟踪器。


6. 不要提供

  1. 我是知道的副作用;请不要告诉我,我不需要解锁文件夹。
  2. 在发布我的问题之前,我阅读了这些超级用户的问题和答案:

    1. 无法删除空文件夹,因为它已被使用
    2. 有没有办法从命令行处理锁定的文件并释放它?
    3. 如何删除正在使用的文件夹?
    4. 从 Windows 命令行删除目录,即使该目录已在程序中打开
    5. 从命令行删除锁定的文件/文件夹
  3. 我检查了来自此列表在 Unlocker 网站上。

答案1

自从我发现 IOBit Unlocker(大约 10 年前)后,我就不再使用您提供的所有工具和其他一些工具了,为什么?它实际上会删除文件/文件夹,无论如何,界面干净,而且您可以自动执行(如您所要求的)。几年后,我在网上看到一篇文章,说它甚至会删除受保护且正在使用的 Avast AV 文件。

如果您愿意,您可以安装并保持原样,或者只是获取文件并独立使用它(用于IObitUnlocker.exe /?查看命令行帮助):

已安装:

IObitUnlocker.exe /Delete /Advanced <folder>

独立:

cd <app folder>
sc create IObitUnlocker type= kernel start= demand binPath= "IObitUnlocker.sys"
IObitUnlocker.exe /Delete /Advanced <folder>
sc delete IObitUnlocker
rd /S /Q %AllUsersProfile%\IObit

自动化方面的缺点是操作后会显示一条消息,但您可以使用timeout /T <time> && taskkill /IM IObitUnlocker.exe。这<time>取决于文件夹内容/层次结构、正在使用的文件数、系统速度和 CPU/HDD 负载)。请记住,解锁需要提升权限。

如果您碰巧使用 AutoHotKey,那么对话框的关闭(以及您能想到的任何 UI 交互)都很容易实现自动化。

SetTimer, DismissUnlocker, 1000
DismissUnlocker() {
  If WinExist("IObit Unlocker ahk_class #32770")
    ControlClick, Button1
}

相关内容