PowerToys 文件锁匠-命令行版本

gtlvzcf8  于 6个月前  发布在  其他
关注(0)|答案(8)|浏览(49)

Description of the new feature / enhancement

Make a command line version of file locksmith so it can be use in batch files.

Scenario when this would be used?

I have a batch file to open an excel file, but only if it is not already open.
And after I open the excel file, my batch file waits for it to finish before doing more stuff.
because of the quirky way excel works when it has multiple files open, neither "start /wait" nor C:\Windows\System32\tasklist.exe can do the job.

Supporting information

"C:\Windows\System32\openfiles.exe /query" takes way too long.
"lsof" is a command in various flavors of unix that is like what I want.
https://man7.org/linux/man-pages/man8/lsof.8.html
Lot's of other people want this too, as google will show you.
https://www.google.com/search?q=how+to+check+from+command+line+if+a+given+file+is+open+by+any+process

vaqhlq81

vaqhlq811#

我迫切需要这个,所以我把它加到了我的fork( https://github.com/lwahonen/PowerToys )。我很乐意帮助将其合并到上游。
用法:
"PowerToys.FileLocksmithUI.exe"
实现的选项:
/list 将所有当前锁定文件输出到控制台
/wait 仅在所有锁定文件都被处理后退出
/kill 尝试杀死持有对列出文件的锁定的所有进程
/quit 在处理其他选项后关闭FileLocksmith
例如

ep6jt1vc

ep6jt1vc2#

最终为控制台工具创建了一个单独的项目,更新了我的仓库。不确定如何将ConsoleSmith.exe打包到安装程序中,但我很乐意与更有知识的人合作

mnowg1ta

mnowg1ta3#

我会看看我们是否可以在UI内部完成这个操作,并可能调整UI exe名称。
如果有"kill"的替代方案,这是一条重要的反馈。

dhxwm5r4

dhxwm5r44#

正如我在其他问题中提到的:从使用子系统构建的程序提供命令行界面是一个头疼的问题。你可以重新连接到启动你的控制台,但这仍然会破坏一些事情,比如将输出重定向到文件 - 脚本通常会重定向报告/进一步处理工具的输出。
如果有人有一个魔法技巧可以解决以下问题,我会非常高兴:

  • 当通过图标启动应用程序时,不显示额外的控制台窗口
  • 如果应用程序从命令行启动,将文本输出到cmd
  • 让输出可用于管道到文件/其他工具。
    至于你的另一个观点,我很乐意重命名命令。终止工作更好吗?这似乎是在Win32 API(如TerminateThread)中经常使用的术语。
b5buobof

b5buobof5#

Push it out the door the world needs it!

70gysomp

70gysomp6#

Push it out the door the world needs it!
I'm waiting for @crutkas to either suggest a way to integrate the command-line to the existing UI, or accept that the CLI is a separate tool.

jhdbpxl9

jhdbpxl97#

@Langenbacher,
已经存在一些控制台工具可以实现这个功能:

这些工具是否能满足你的需求?

6uxekuva

6uxekuva8#

@Langenbacher, 已经有一些现有的控制台工具可以实现这个功能:

这些工具对你有用吗?
我一直在尝试使用原始句柄,但通常会错过一些句柄,尤其是当我试图覆盖C++ DLL/输出文件时。我尝试了所有选项,包括在包含文件夹和文件上查找句柄。
但是PowerToys Locksmith总是关闭所有内容。每次都要打开GUI,以管理员模式重新启动它,然后为每个句柄点击每个按钮,这真的很烦人。如果能将其添加到我的IDE构建选项等中,那将是非常有帮助的。它似乎也会关闭一些我认为实际上并没有锁定文件的句柄。但至少它能完成任务。
你开源程序做得很好,我会尝试一下并告诉你效果如何。谢谢!

相关问题