我正在尝试向 Windows 中的文件夹的上下文菜单添加一个新选项。我已成功添加该选项并指定其命令,如下所示:
xcopy.exe "%0\*" "c:\Destination\" /EHY
此代码已添加到 regedit.exe 中:
我在
c:
驱动器中有一个名为 Destination
的文件夹。我正在尝试将右键单击的文件夹复制到 Destination
文件夹,而没有命令提示符窗口。
xcopy 正在运行并在前台复制文件夹的 content。我怎样才能:
Destination
中以复制的文件夹命名的新文件夹。满足列出的两个问题的命令在最后。首先,一些解释说明。
将 shell 命令添加到 Windows 注册表时,您可以使用多个变量(例如
%1
、%L
和 %V
)。现在,您需要在 Destination
中创建一个以复制的文件夹命名的新文件夹。 参数扩展(例如%~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"
这当然可以变得更加灵活和高效,但上面的命令至少演示了完成任务的技术。