我想将右侧动态文件夹中的文件名复制到剪贴板,但压缩

本文关键字:复制 文件名 剪贴板 压缩 文件夹 动态 | 更新日期: 2023-09-27 18:34:19

我想在右键单击包含文件夹时将文件名复制到剪贴板,但如果有zipisorar7z文件,我也需要一个内容列表。

我尝试了batch/cmd但它不起作用,现在我正在使用 C# 进行测试。但是我不知道如何模拟资源管理器contextmenue-event将参数发送到 C#-App。

在这两种方式上,我都从注册表编辑器条目开始:

HKEY_CLASSES_ROOT'Directory'shell'Liste'command'` REG_SZ with attribute C:'liste.bat "%1%"`

列表.bat:

set var=%1'
set listtmp
del c:'ESC'* /q /f
dir c:'ESC'
copy %var% c:'ESC'
cd c:'ESC'
dir  /s /b >%listtmp%
if exist c:'ESC'*.zip
(7z l *.zip >>%listtmp%)
if exist c:'ESC'*.7z
(7z l *.7z >>%listtmp%)
echo listtmp|clip    

C# 提供了在变量和枚举中处理列表以检查存档的好处,但我不明白如何使用下拉菜单中的参数来启动我的 C# 应用程序,所以批处理更方便,使用 C#-exes 更多的人怀疑,因为广告软件......偏执的同事;)

我认为有一种方法,无需处理文件,也没有那么多变量。哦,对不起,当我没有提到一个不同的必要的事情时,这是我的第一篇文章。

我想将右侧动态文件夹中的文件名复制到剪贴板,但压缩

接下来C:'bat'dirToClp.bat文件可以帮助您 我想在右键单击包含文件夹时将文件名复制到剪贴板

@ECHO OFF >NUL
@SETLOCAL enableextensions
set "listtmp=%tmp%'list.tmp"
pushd "%~1"
dir /S /B /A-D>"%listtmp%"
if exist *.zip 7z l *.zip>>"%listtmp%"
if exist *.7z 7z l *.7z>>"%listtmp%"
type "%listtmp%"|clip
del "%listtmp%"
popd
echo Your clipboard now holds result of:
echo dir %CD%
pause 
@ENDLOCAL
@goto :eof

此处echopause在批处理脚本中使用clip时,应警告用户其剪贴板即将被覆盖。最终/A-D如果需要,可以从dir /S /B /A-D中删除开关(导致文件夹中的名称在列表中(。

请注意7z电话,因为我无法验证和确认正确性。

该值c:'windows'system32'cmd.exe /D /C c:'bat'dirToClp "%1"从注册表导出,如下所示(但可以位于HKEY_CLASSES_ROOT'Folder注册表项下而不是HKEY_CLASSES_ROOT'Directory(:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT'Directory'shell'DirToClipboard]
[HKEY_CLASSES_ROOT'Directory'shell'DirToClipboard'command]
@="c:''windows''system32''cmd.exe /D /C c:''bat''dirToClp '"%1'""

;

这不是纯粹的C:'bat'dirToClp.bat调用,而是通过cmd.exe /D /C因为,出于工作和安全原因,我对.bat.cmd.vbs等使用"使用PSPad打开"默认操作。

此外,作为一般原则,我避免将文件放置在磁盘根目录(以及%userprofile%根目录和桌面(的C:'bat文件夹中的批处理。