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

时间:2017-04-01 16:48:32

标签: windows batch-file cmd xcopy

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

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

此代码已添加到regedit.exe

Snapshot here.

我在名为c:的{​​{1}}驱动器中有一个文件夹。我正在尝试将我右键单击的文件夹复制到Destination文件夹,而不使用命令提示符窗口。

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

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

1 个答案:

答案 0 :(得分:0)

满足列出的两个问题的命令就在最后。首先,一些解释说明。

当您向Windows注册表添加shell命令时,您可以使用多个变量(例如Sub CreatePivotTable() Dim sheet As Worksheet Set sheet = Worksheets("mac3") Sheets.Add.Name = "Table" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ sheet.UsedRange, Version:=xlPivotTableVersion14). _ CreatePivotTable TableDestination:="Table!R3C1", TableName:="Pvt" _ , DefaultVersion:=xlPivotTableVersion14 Sheets("Table").Select Cells(3, 1).Select With ActiveSheet.PivotTables("Pvt").PivotFields("Gas") .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("Pvt").PivotFields("Dash") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("Pvt").AddDataField ActiveSheet.PivotTables( _ "Pvt").PivotFields("Qty"), "Sum of Qty", xlSum Range("B4").Select Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _ False, True, False, False) End Sub %1%L)。现在,您希望%V中的新文件夹以复制的文件夹命名。 Parameter extensions(例如Destination)可以从完整路径中删除所有内容,并为您提供目录leaf的名称。 但是,从Windows注册表使用shell命令时,这些不可用。获取普通目录名称的最直接方法是创建临时批处理脚本,运行它,然后删除批处理脚本。

以下内容将所选目录复制为%~n1内的子目录:

Destination

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

上一个命令将打开命令窗口并在复制过程中保持打开状态。要隐藏该窗口,请使用小实用程序RunHiddenConsole

以下内容将复制所选目录并在复制时隐藏命令窗口:

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"

这当然可以变得更加灵活和高效,但上述命令至少证明了完成任务的技术。