Windows 7 自定义上下文菜单选项,用于复制未按预期工作的选定文件

Windows 7 自定义上下文菜单选项,用于复制未按预期工作的选定文件,windows-7,command,registry,contextmenu,command-prompt,Windows 7,Command,Registry,Contextmenu,Command Prompt,我正在尝试创建一个自定义上下文菜单选项,用于复制选定的文件,并将日期和时间字符串附加到复制的文件名中 以下是我在注册表中设置的命令,在HKCU>软件>类>*>Shell>复制此文件>命令中: cmd/s/d/c@echo off&setlocal EnableExtensions EnableDelayedExpansion&set TIME=%TIME:=0%&set DateTimeFn=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%\uu331!时间:~0,2!-

我正在尝试创建一个自定义上下文菜单选项,用于复制选定的文件,并将日期和时间字符串附加到复制的文件名中

以下是我在注册表中设置的命令,在HKCU>软件>类>*>Shell>复制此文件>命令中:

cmd/s/d/c@echo off&setlocal EnableExtensions EnableDelayedExpansion&set TIME=%TIME:=0%&set DateTimeFn=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%\uu331!时间:~0,2!-!时间:~3,2!-!时间:~6,2!&复制/y%1%1\u!DateTimeFn!&暂停>nul
但不知何故,enabledelayedexpansion无法正常工作,因为当我尝试在文件
test.js
上使用它时,它会将其复制为
test.js!DateTimeFn

而且它不能很好地处理文件名中的空格。有人能指导和帮助解决这个问题吗

我希望尽可能使用一行程序而不是创建单独的批处理脚本

我尝试在其中使用开关和变量扩展运行命令的注册表文件示例:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\*\shell\Duplicate This File II]

[HKEY_CURRENT_USER\Software\Classes\*\shell\Duplicate This File II\command]
@="cmd /v:on /c @echo off & set TIME=%TIME: =0% & set DateTimeFn=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%_!TIME:~0,2!-!TIME:~3,2!-!TIME:~6,2! & copy /y %1 %1_!DateTimeFn! & pause > nul"

您需要在FOR命令中使用参数,然后可以使用命令修饰符将文件名与扩展名分开

cmd /Q /V:ON /E:ON /C "set TIME=%%TIME: =0%% & set DateTimeFn=%%DATE:~10,4%%-%%DATE:~4,2%%-%%DATE:~7,2%%_!TIME:~0,2!-!TIME:~3,2!-!TIME:~6,2! &FOR %%G IN ("%1") do copy "%1" "%%~nG_!DateTimeFn!%%~xG" & pause>nul"
这是实际的注册表导出

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\*\shell\Time_Stamp_FileName]

[HKEY_CURRENT_USER\Software\Classes\*\shell\Time_Stamp_FileName\command]
@="cmd /Q /V:ON /E:ON /C \"set TIME=%%TIME: =0%% & set DateTimeFn=%%DATE:~10,4%%-%%DATE:~4,2%%-%%DATE:~7,2%%_!TIME:~0,2!-!TIME:~3,2!-!TIME:~6,2! &FOR %%G IN (\"%1\") do copy \"%1\" \"%%~nG_!DateTimeFn!%%~xG\" & pause>nul\""

删除setlocal并使用CMD/V:ONDo我是否要删除其他开关并使用您建议的唯一开关并删除setlocal?您是否阅读了帮助文件以了解这些选项的作用?导出注册表设置以便我可以复制您正在执行的操作。请使用该信息更新您的问题,同时删除您的注释和所有代码,并将其添加到您的问题中。请检查更新的问题的注册表代码。。