想法是右键单击任何文件,然后在下拉列表中选择“备份”,只需复制文件并在其名称末尾添加日期时间,然后可能将该副本移动到另一个驱动器。
我想要一种通过右键单击文件来运行批处理脚本的方法,并将其作为参数传递(不输入),或者知道该文件是应该在脚本中使用的文件。
主要用于Windows XP,我需要它是原生的,因为我工作的许多站点计算机不属于我们,我不想复制超过必要的文件或依赖于可用的标准命令以外的任何东西(三分之二的机器没有PowerShell等)
我知道如何更改文件选项以在特定文件夹位置(下方)打开cmd,而我可能会将其更改为适用于1种特定文件类型,但我不想为每个文件类型添加密钥机器上的文件类型。
[HKEY_CLASSES_ROOT \文件夹\壳\ 1.BAT \命令] @ =“c:\ windows \ system32 \ cmd.exe \”%1 \“”
从另一个网站上,一个可以解决这个问题的工作
jvierra - “Windows在没有更改注册表的情况下始终具备这种能力。
在桌面上放置一个bat或VBS文件。将文件拖放到bat图标上。 bat将以%1的形式接收已删除文件的文件名,vbscript将以WScript.Arguments(0)的形式接收它。
试试吧。它运作得很好。从那时起,bat或脚本可以对文件执行任何操作。“
答案 0 :(得分:16)
您可以将蝙蝠添加到“发送至”菜单中。见http://support.microsoft.com/kb/310270
简而言之,只需将.bat文件复制到用户SendTo文件夹即可。
COPY MYBACKUP.BAT "%USERPROFILE%\SendTo"
用户调用你的蝙蝠选择“发送到”菜单项的选项。
用于更复杂的参数化,例如更改菜单中显示的文本或图标......您可以创建指向.BAT的链接并将链接放在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
编辑:在一些提交之后,我通过添加所需的引号更正了COPY命令中的SendTo文件夹规范;我添加了一个测试示例,并更正了%~dpnx
语法
答案 1 :(得分: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
更正下面的daniel测试示例
@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