通过右键单击任何文件来运行批处理脚本

dan*_*iel 9 registry batch-file click

我们的想法是右键单击任何文件,然后在下拉列表中选择"备份",它只复制文件并在其名称末尾添加日期时间,然后可能将该副本移动到另一个驱动器.

我想要一种运行批处理脚本的方法,方法是右键单击一个文件并将其作为参数传递(不输入),或者知道该文件是应该在脚本中使用的文件.

主要用于Windows XP,我需要它是原生的,因为我工作的许多站点计算机不属于我们,我不想复制超过必要的文件或比任何可用的标准命令更多的东西(三分之二的机器没有powershell等)

我知道如何更改文件选项以在特定文件夹位置(下方)打开cmd,而我可能会将其更改为适用于1种特定文件类型,但我不想为每种类型的文件添加密钥在机器上.

[HKEY_CLASSES_ROOT\Folder\shell\1.bat\command] @ ="c:\ windows\system32\cmd.exe \"%1 \""

从另一个网站,一个解决方案几乎解决了这个问题

jvierra - "Windows一直有这种能力而不改变注册表.

在桌面上放置一个bat或VBS文件.将文件拖放到bat图标上.bat将以%1的形式接收已删除文件的文件名,vbscript将以WScript.Arguments(0)的形式接收它.

试试吧.它运作得很好.从那时起,bat或脚本可以对文件做任何事情."

PA.*_*PA. 16

您可以将您的球棒添加到"发送至"菜单中.请参见http://support.microsoft.com/kb/310270

简而言之,只需将.bat文件复制到用户SendTo文件夹即可.

COPY MYBACKUP.BAT "%USERPROFILE%\SendTo"
Run Code Online (Sandbox Code Playgroud)

用户调用您的蝙蝠选择"发送到"菜单项的选项.

对于更复杂的参数化,例如更改菜单中显示的文本或图标......您可以创建指向.BAT的链接并将链接放在SendTo文件夹而不是.bat本身

COPY "My very special backup.lnk" "%USERPROFILE%\SendTo"
Run Code Online (Sandbox Code Playgroud)

您可以先进行快速测试.使用此内容创建BAT文件,并将其复制到Sendto文件夹.

@echo off
echo Current Directory is %cd%
echo Current batch run is %0 %~dpnx0
echo Subject is %1 %~dpnx1
pause  
Run Code Online (Sandbox Code Playgroud)

编辑:在一些提交之后,我通过添加所需的引号更正了COPY命令中的SendTo文件夹规范; 我添加了一个测试示例,并更正了%~dpnx语法

  • 在Windows 7上,"发送到"目录为:C:\ Users\YOUR_USER_ID\AppData\Roaming\Microsoft\Windows\SendTo,或%AppData%\ Microsoft\Windows\SendTo (2认同)