Windows:如何向“右键单击”菜单添加批处理脚本操作


18

我有一些程序可以创建临时文件,备份文件或不重要的类似文件。例如,默认情况下,GVim for Windows在中创建备份文件filename.txt~

有时我需要清理目录并删除所有这些文件。我为此做了一个简单的.bat文件。但是,必须启动CMD,导航到文件夹并运行脚本很麻烦。特别是因为这是一个我想经常在各种文件夹上运行的脚本。而且我不想将脚本复制到多个文件夹,因为这将是维护的噩梦。

因此,我在想,最好的解决方案是添加允许我运行脚本的右键菜单菜单项。这样我可以右键单击资源管理器中的文件夹,然后单击“清理”,然后在该文件夹上运行我的脚本。

所以我的问题是:如何添加运行自定义批处理脚本的右键菜单操作?

Answers:


18

我已尝试使用此.reg密钥在Windows XP SP3上进行尝试。目前没有Windows 7可以正确测试它,但应该几乎相同。

  1. 打开记事本,然后从下面粘贴代码。
  2. 根据需要进行编辑。
  3. 另存为MyScript1.reg
  4. 双击以导入注册表。
  5. 通过右键单击资源管理器中的任何目录进行测试
Windows注册表编辑器版本5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1]
@ =“执行MyScript1”

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1 \ command]
@ =“ \” C:\\ MyScriptsDirectory \\ MyScript1Directory \\ MyScript1.bat \“ \”%1 \“”

4
我已经编辑了您的答案。Windows注册表编辑器5.00版是.reg文件的必需“标头”。否则,Windows将拒绝将内容注入注册表。
extremko

+1指出那个。当使用C / P代码时,我完全忘记了这一点。
罗伯·施密特

1
我试过了 现在,我可以直接在文件夹上单击鼠标右键,但是如果文件夹单击鼠标右键则无法使用。这实际上是我想要的。怎么做?
ervingsb 2012年

1
“这样,我可以右键单击资源管理器中的文件夹,然后单击清除,然后在该文件夹上运行我的脚本”,
罗伯·施密特

是的,这就是为什么我要澄清它。抱歉,不准确。我实际上认为它是右键单击该文件夹。它不是文件夹图标,而是文件夹内。
ervingsb

19

实际上,当前答案并不是过时的。我在Windows 10上尝试了完全相同的操作,并且能够将其添加Run Batch script到Windows中所有文件夹的上下文菜单中。

这是我的批处理脚本的内容(不适用于UNC path):

@回声关闭
使用以下参数调用了ECHO%〜n0:
SET args =%*
如果未定义args转到结束
回声%*
:结束
暂停

我所做的注册表更改可以与此REG文件复制:

Windows注册表编辑器版本5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch脚本]
@ =“&运行批处理脚本”

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script \ command]
@ =“ \” H:\\ BATCH_FILE_PATH \\ context-batch.bat \“ \”%1 \“”

这只会为Windows中的所有目录/文件夹添加一个上下文菜单项。如果要显示每个文件,则可以使用以下命令:

Windows注册表编辑器版本5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Run脚本]
@ =“运行&script”

[HKEY_CLASSES_ROOT \ * \ shell \ Run脚本\命令]
@ =“ \” H:\\ BATCH_FILE_PATH \\ context-batch.bat \“ \”%1 \“”

或者,您可以Send To通过创建批处理脚本的快捷方式并将其放在下面%APPDATA%\Microsoft\Windows\SendTo(或输入shell:sendto地址栏),将批处理脚本添加到项目列表中。

如果您希望脚本显示在右键单击目录中的空白区域(目录背景?)时出现的上下文菜单中,则可以使用以下REG文件:

Windows注册表编辑器版本5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch脚本]
@ =“&运行批处理脚本”
“ Icon” =“%SystemRoot%\\ System32 \\ shell32.dll,71”

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch script \ command]
@ =“ H:\\ BATCH_FILE_PATH \\ context-batch.bat \”%V \“”

您不需要"Icon"="%SystemRoot%\\System32\\shell32.dll,71"线。它只是向您的上下文菜单中添加一个图标,如下所示:

上下文菜单图标窗口


谢谢!顺便说一句,当我右键单击当前文件夹的空白区域时(不仅是单击文件夹本身时),您是否知道如何显示此上下文菜单?
汤姆·布里托

@TomBrito请参阅我的最新编辑。
Vinayak

@Tom Brito:修改空白空间上下文菜单似乎在这里得到了回答:stackoverflow.com/questions/4902041/…–
kreemoweet

@kreemoweet感谢您的链接!但是,我通过分析上下文菜单编辑器发现了这一点。
Vinayak

@kreemoweet我更改了Directory\Background要包含的路径字符串,%V因为它将当前目录传递给脚本。但是,我不太确定这意味着什么。%W似乎同样有效。
Vinayak

7

我建议为该任务使用默认程序编辑器。与直接编辑注册表相比,它既用户友好,又可以说更安全。

选择上下文菜单 在此处输入图片说明

选择您要更改的扩展名。 在此处输入图片说明

选择添加... 在此处输入图片说明

给您的命令一个标题,浏览到批处理文件,并选择一个图标来代表您的命令。 在此处输入图片说明

将上下文菜单保存到注册表中,一切顺利。


我想在文件夹而不是文件类型上运行批处理。似乎没有帮助...
Tom Brito

这对我有所帮助,谢谢分享。
丹尼尔·卡普兰

不错的程序。谢谢。
Laurie Stearn,

0

我在Windows 10上使用的替代解决方案是将脚本添加到路径变量中的文件夹之一,然后在使用资源管理器时使用顺序:

  • Ctrl + L-开始在搜索栏中写

  • 键入:cmd,然后按Enter-在当前目录中启动cmd

  • 通过输入脚本文件名来运行脚本


0

@Vinayak,

如果使用“发送到”选项,则可能需要将行添加cd /d %1到批处理命令的开头,以便它在目标路径下运行。

我当前的批处理文件如下所示:

@echo off
cd /d %1    
del *.txt
pause

感谢您的帮助,我恰巧在适当的时候通过Google偶然发现了这个问题:)


这实际上是评论,而不是原始问题的答案。要批评或要求作者澄清,请在其帖子下方留下评论-您始终可以对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论。请阅读为什么我需要50个信誉才能发表评论?我该怎么办呢?
DavidPostill

@DavidPostill很好,在发布答案之前,他没有在此线程中发表自己的评论。而且(假设他想发表一些值得评论的事情),他可以怎么评论?大概什么也没有。
barlop

如您所知,@ barlop答案不能替代评论。一种选择是建议对其他答案进行编辑……但这很可能会被拒绝。
DavidPostill

@DavidPostill我的观点仅仅是,那么他别无选择。而且您在原始评论中对此并不十分清楚。实际上,您最初的评论暗示了他有一些选择,但他没有选择的想法。
barlop

@barlop啊。好。我会考虑一些更好的措辞……
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.