2011-07-28 40 views
9

想法是右键点击任何文件,然后在下拉菜单中选择“备份”,只需复制文件并在其名称末尾添加日期时间,然后可能移动复制到另一个驱动器。通过右键点击任何文件运行批处理脚本

我想通过右键单击文件并将其作为参数传递(不键入)或以某种方式知道应该在脚本中使用该文件的方式来运行批处理脚本。

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

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

[HKEY_CLASSES_ROOT \文件夹\壳\ 1.BAT \命令] @ = “C:\ Windows \ System32下\ cmd.exe的\” %1 \ “”

从另一个站点一个变通,近解决了这对我来说

jvierra - “希望Windows一直有这样的能力,而不会更改注册表

地将桌面上的一个蝙蝠或VBS文件拖放到蝙蝠图标文件,蝙蝠会收到。所删除文件的文件名称为%1,并且vbscript将以WScript.Arguments(0)的形式接收它。

试试吧。它工作得很好。蝙蝠或脚本可以从该点的文件做任何事情。”

+0

你也可以在'SendTo'文件夹中放一个快捷方式,然后你可以右键单击一个文件,选择“发送到”,然后选择备份。这将不需要修改注册表。 – wimh

回答

15

您可以将您的蝙蝠添加到‘发送到’菜单。见http://support.microsoft.com/kb/310270

简单,只需复制你的.bat文件到用户SendTo文件夹。

COPY MYBACKUP.BAT "%USERPROFILE%\SendTo" 

用户调用你的蝙蝠中选择“发送到”菜单项。

的选项更复杂的参数化,如改变在菜单中显示的文本,或图标.. 。你可以创建一个到.BAT的链接并放置l SendTo文件夹中的墨水而不是.bat本身

COPY "My very special backup.lnk" "%USERPROFILE%\SendTo" 

您可以先运行快速测试。用这个内容创建一个BAT文件,并通过Sendto文件夹复制它。

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %~dpnx0 
echo Subject is %1 %~dpnx1 
pause 

编辑:以下一些commments的,我已经纠正在COPY命令SendTo文件夹说明书中,通过加入所需报价;我附加了一个测试示例,并更正了%~dpnx语法

+0

我不明白你会从那里传入文件名。 – daniel

+0

文件名由Explorer传递,作为调用的.bat的第一个参数。你试过了吗?你有什么问题? –

+0

这是一件很难解释的事情,也很难谷歌,这就是为什么我问。 批处理脚本需要知道哪个文件已被点击。我理解在sendto中有一个.bat可以让你右键单击并运行它。但是在那之后,文件如何作为第一个参数进入。 – daniel

1

@PA示例(复制在右下方以便于查看)关闭。

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %dpnx0 
echo Subject is %1 %dpnx1 
pause 

我没有足够的声望来回复@PA。你忘了在变量中包含〜。这个Q & A帮了我很多,所以我希望这可以帮助别人。感谢@daniel和@PA

更正丹尼尔测试下面的例子

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %~dpnx0 
echo Subject is %1 %~dpnx1 
pause 

如果你想不带路径只是呼应了文件的名称,然后你可以使用%〜N1

例如:

echo Subject is %~n1 
相关问题