Windows上下文菜单运行隐藏的xcopy

3

我正在尝试为Windows文件夹上下文菜单添加一个新选项。我已经成功添加了该选项,并指定了其命令,如下所示:

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

这段代码被添加到了regedit.exe中。

快照在此。

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

目前出现的问题是:xcopy正在运行并且在前台复制文件夹的内容。请帮我解决以下两个问题:

  1. 在不显示窗口的情况下运行xcopy命令。
  2. 将文件夹复制到一个以复制文件夹命名的新文件夹中,该文件夹位于“Destination”中。

谢谢。


3
您知道您的命令不能像您所述的那样工作,因为您应该使用%L,%1或%~1而不是%0。 - Compo
1个回答

1
满足列出的两个问题的命令位于最后。首先,一些解释说明。
当您将一个shell命令添加到Windows Registry时,您可以使用几个变量(例如%1%L%V)。现在,您想要在Destination中创建一个以复制文件夹命名的新文件夹。参数扩展(例如%~n1)可以从完整路径中剥离所有内容并给出目录名称。 然而,在使用来自Windows Registry的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"

这段代码可以更加灵活高效,但是上述命令至少演示了实现任务的技巧。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接