我经常使用当前日期和时间来命名新文件夹,我已经制作了一个程序来执行此操作(即它需要一个参数,然后根据当前日期和时间以及参数创建一个新文件夹)。 / p>
我想知道如何制作它以便我在Windows资源管理器的上下文菜单中显示“新日期时间文件夹”(在“新文件夹”下面)并且它会自动添加日期和时间在前面和允许用户输入名称。它实际上很像标准的“新文件夹”,除了默认名称是“新文件夹”,它应该是“DateTime”,默认情况下不应该标记文本。
有什么想法吗?感谢。
答案 0 :(得分: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上测试了这个并且它有点像黑客(我必须添加假的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上下文菜单,因此您无法使用各种未记录的资源管理器。
答案 1 :(得分:0)