Windows上下文菜单运行隐藏xcopy

我正在尝试在Windows上的文件夹的上下文菜单中添加一个新选项。 我已经设法添加选项,并指定其命令如下:

xcopy.exe "%0\*" "c:\Destination\" /EHY 

这段代码被添加到regedit.exe

快照在这里。

我在名为Destinationc:盘中有一个文件夹。 我正在尝试将我右键单击的文件夹复制到“ Destination文件夹,而没有命令提示符窗口。

发生了什么:xcopy正在运行并复制文件夹的内容 ,并在前台。 请帮我解决这两个问题:

  1. 运行xcopy命令而不显示窗口。
  2. 将该文件夹复制到以复制文件夹命名的新目录中。

谢谢。

满足上述两个问题的命令是最后的。 首先是一些解释说明。

当您将一个shell命令添加到Windows注册表中时,您可以使用多个变量(例如%1%L%V )。 现在,您需要在复制的文件夹之后命名一个新的文件夹。 参数扩展 (如%~n1 )可以从完整路径中删除所有内容,并给出目录树叶的名称。 但是,从Windows注册表中使用shell命令时,这些不可用。 获取普通目录名最直接的方法是创建一个临时批处理脚本,运行它,然后删除批处理脚本。

以下内容将复制所选目录作为Destination的子目录:

 cmd.exe /c echo @echo off>"C:\Destination\_tempxcopy.bat" & echo xcopy "%%~1\*" "C:\Destination\%~n1" /ECIQHY ^>nul>>"C:\Destination\_tempxcopy.bat" & call "C:\Destination\_tempxcopy.bat" "%1" & del "C:\Destination\_tempxcopy.bat" 

下一部分需要使用第三方实用程序。

前一个命令将打开一个命令窗口,并保持打开状态,只要正在进行复制。 要隐藏该窗口,请使用小型实用程序RunHiddenConsole

以下将复制选定的目录并在复制时隐藏命令窗口:

 "C:\Destination\RunHiddenConsole.exe" cmd.exe /c echo @echo off>"C:\Destination\_tempxcopy.bat" & echo xcopy "%%~1\*" "C:\Destination\%~n1" /ECIQHY ^>nul>>"C:\Destination\_tempxcopy.bat" & "C:\Destination\RunHiddenConsole.exe" /w "C:\Destination\_tempxcopy.bat" "%1" & del "C:\Destination\_tempxcopy.bat" 

这当然可以做得更加灵活和高效,但上面的命令至少说明了完成任务的技巧。