经过一番尝试,我找到了一种通过编辑注册表添加基本版本的方法。它不会提示输入名称(只使用基本的DD.MM.YYYY HH;MM;SS格式),也不会进入资源管理器重命名模式:
![资源管理器新建菜单](https://istack.dev59.com/UY3aW.webp)
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\.NewDirectoryBasedOnDate]
@="NewDirectoryBasedOnDate"
[HKEY_CURRENT_USER\Software\Classes\.NewDirectoryBasedOnDate\ShellNew]
"Command"="\"CMD\" /D /E:ON /c for /F \"tokens=1-9 delims=.,\\:/\" %%A IN (\"%%date%%.%%time%%\") DO for /F \"tokens=*\" %%a IN (\"%1\") do md \"%%~dpa\\%%A.%%B.%%C %%D;%%E;%%F\""
"nullfile"=hex:
[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate]
"FriendlyTypeName"="Directory Based On Date"
[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate\DefaultIcon]
@="shell32.dll,3"
[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate\Shell\open]
"LegacyDisable"=hex:
[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate\Shell\open\command]
@="."
我只在WinXP上测试过,这有点像是一个hack(我必须添加假的
Shell\open\command
键才能显示新菜单项)。
通过将命令更改为
wscript.exe //nologo "C:\path\to\NewDateDir.wsf" "%1"
并将以下代码保存在NewDateDir.wsf中,你最终会得到这个:
<?xml version="1.0" ?><job><script language="VBScript"><![CDATA[
if WScript.Arguments.Count < 1 then
MsgBox("Bad parameter!")
WScript.Quit(1)
end if
Set FSO=CreateObject("Scripting.FileSystemObject")
Function StrFilter(s,ch,rep)
StrFilter=Join(Split(s,ch,-1),rep)
End Function
basedir=FSO.GetParentFolderName(WScript.Arguments(0))
defname=Date&" "&Time
defname=StrFilter(defname,"/",".")
defname=StrFilter(defname,":",";")
name=InputBox("New folder in "&basedir,"New folder",defname)
if not IsEmpty(name) and Len(name) > 0 then
FSO.CreateFolder(FSO.BuildPath(basedir,name))
end if
]]></script></job>
即使您决定编写一个Shell扩展,我认为激活资源管理器的重命名模式将会很困难,特别是如果您想要进行部分选择。您还需要记住,其他程序可能会实现Shell上下文菜单,因此您不能使用所有未记录的资源管理器功能。