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

时间:2011-02-02 09:39:59

标签: windows contextmenu windows-explorer

我经常使用当前日期和时间来命名新文件夹,我已经制作了一个程序来执行此操作(即它需要一个参数,然后根据当前日期和时间以及参数创建一个新文件夹)。 / p>

我想知道如何制作它以便我在Windows资源管理器的上下文菜单中显示“新日期时间文件夹”(在“新文件夹”下面)并且它会自动添加日期和时间在前面和允许用户输入名称。它实际上很像标准的“新文件夹”,除了默认名称是“新文件夹”,它应该是“DateTime”,默认情况下不应该标记文本。

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:7)

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

Explorer New menu

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上测试了这个并且它有点像黑客(我必须添加假的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上下文菜单,因此您无法使用各种未记录的资源管理器。

答案 1 :(得分:0)

您必须实现shell扩展,特别是上下文菜单。 Here是如何做到这一点的非常好的演练。 MSDN上还有一些较低级别的文档here(特别是上下文菜单)和here(通常用于shell扩展)。对于您的特定情况,我认为您将register在“目录\背景”键下进行shell扩展。