在Windows资源管理器上下文菜单添加自定义“新建文件夹”

4
我经常使用当前日期和时间来命名新文件夹,并且我已经编写了一个程序来实现这一点(即它需要一个参数,然后基于当前日期和时间以及该参数创建一个新文件夹)。
我想知道如何使得在Windows资源管理器的上下文菜单中出现“新建日期时间文件夹”选项(就在“新建文件夹”下面),并且它自动添加日期和时间前缀,并允许用户输入名称。它实际上非常类似于标准的“新建文件夹”,只是默认名称应为“DateTime”,文本不应默认被标记。
有什么想法吗?谢谢。
2个回答

7

经过一番尝试,我找到了一种通过编辑注册表添加基本版本的方法。它不会提示输入名称(只使用基本的DD.MM.YYYY HH;MM;SS格式),也不会进入资源管理器重命名模式:

资源管理器新建菜单

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中,你最终会得到这个: Explorer New menu and WSH script
<?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上下文菜单,因此您不能使用所有未记录的资源管理器功能。

2
这有点像是一个hack,但仍然相当令人印象深刻。不错。 - Luke

0

您需要实现一个 shell 扩展,特别是上下文菜单。这里有一个非常好的教程,告诉您如何实现它。MSDN 这里(特别是上下文菜单)和 这里(一般的 shell 扩展)也有一些较低级别的文档。对于您的特定情况,我认为您应该在“Directory\Background”键下注册您的 shell 扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接