使用批处理命令复制当前文件选择

时间:2014-07-29 21:59:30

标签: windows batch-file

通常我需要将.exe文件从共享网络位置复制到本地驱动器上的固定目录。为了稍微加快这个过程,我想我会探索添加一个Context Menu选项,它会将所选文件复制到这个固定的本地文件夹。

决定通过向注册表添加一些键来启用针对.exes的相关上下文菜单选项并将此选项指向批处理文件,我似乎无法做出最后一步来复制当前选定的文件(或文件)到本地文件夹。

我理解批处理命令COPY语法,但我看到的所有示例都是将一个特定文件复制到另一个位置。我想用'当前选择'替换'一个特定文件';如果有人对如何通过批处理命令完成任何想法,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果从与.exe文件关联的shell注册表项启动操作,则将对每个选定文件执行该命令(请参阅D.Ddgg's answer

如果您希望/需要使用批处理文件来处理所选文件的列表,则可以使用Send To菜单。创建批处理文件

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem Test if there is something to copy
    if "%~1"=="" exit /b

    rem Congfigure the script
    set "targetFolder=c:\somewhere"

    rem Do the copy - Iterate over the argument list (the files)
    for %%a in (%*) do copy "%%~fa" "%targetFolder%"

    pause

并在Send To文件夹中创建指向批处理文件的链接(在资源管理器的地址栏中输入shell:sendto

所选文件列表将作为单独的参数传递给批处理文件。您应该记住,命令行的长度存在限制,因此,如果文件列表需要超过8KB的字符(aprox),则其中一些不会被处理。

答案 1 :(得分:1)

cmd /k copy "%1" "c:\users\"

直接进入注册表。不需要批处理文件。

PS:您可以看到每个文件都是单独处理的。您无法在一次点击中获得所有选定文件。

除了op建议,我在编辑时其名称消失,sendto使用拖放。因此,您可以将批处理快速启动或放在桌面上,然后将文件拖放到一个页面中。