我正在尝试为Windows中的文件夹的上下文菜单添加新选项。我已设法添加选项并指定其命令如下:
xcopy.exe "%0\*" "c:\Destination\" /EHY
此代码已添加到regedit.exe
我在名为c:
的{{1}}驱动器中有一个文件夹。我正在尝试将我右键单击的文件夹复制到Destination
文件夹,而不使用命令提示符窗口。
发生了什么:xcopy正在运行并复制文件夹的内容并位于前台。请帮我解决这两个问题:
Destination
中的新文件夹。谢谢。
答案 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"
这当然可以变得更加灵活和高效,但上述命令至少证明了完成任务的技术。