在 Windows Vista 中,如果您选择了 15 个文件(例如文本文件),则可以右键单击并选择“打开”(或该文件类型的默认操作)。如果您选择了 16 个文件,则“打开”将从列表中消失。
有什么方法可以延长或者取消这个限制吗?
答案1
看一看这里。我还没有测试过,但它看起来像你想要的解决方案 - 虽然有点黑客。
我已经尽可能地格式化了,但 markdown 不喜欢 ,e。
Windows Vista 的系统外壳是由 Microsoft 特意构建的,以便...
- 当同时选择各种类型的文件时,系统 shell 将无法访问打开这些文件的选项,无论是通过上下文菜单还是键盘(即按 {Enter})。这是由文件扩展名控制的,而不是由处理文件的程序控制的(例如,当同时选择 *.doc 和 *.docx 文件时会发生这种情况)。
- 当选择超过 15 个(即 16 个或以上)相同类型的文件时,会发生相同的事件。
这是由微软高级开发人员 Zack Robinson 记录的,这是一种解决两个问题并将解决方案放在上下文菜单中的解决方法。
它只需要创建一个 Visual Basic 脚本并在“发送到”文件夹中创建它的快捷方式。
创建或下载(将其扩展名重命名为 *.vbs)附加到此帖子的脚本(代码发布如下)。
创建它的快捷方式并将快捷方式放在“发送到”文件夹中。如果找不到“发送到”文件夹,请按 Windows+R 并运行“shell:sendto”。
现在,当您右键单击一个或多个文件时,选择
0_file_execution
“发送到”列表中的(例如)条目将打开所有选定的文件。直接运行脚本,而不是将文件作为参数从“发送到”列表项传递,允许您设置打开每个文件的时间间隔;如果将此值设置得太低,Vista 可能无法打开所有文件。
代码:
on error resume next
nl=vbcrlf
wait=200
set shell=wscript.createobject("wscript.shell")
set filesystem=createobject("scripting.filesystemobject")
set scriptfile=filesystem.getfile(wscript.scriptfullname)
stamp=scriptfile.datelastmodified
stamparray=split(year(stamp)&"."&month(stamp)&"."&day(stamp)&"."&hour(stamp)&"."&minute(stamp)&"."&second(stamp),".")
version=stamparray(0)
for loopversion=1to ubound(stamparray)
versionlength=len(stamparray(loopversion))
if versionlength<2 then stamparray(loopversion)=string(2-versionlength,"0")&stamparray(loopversion)
version=version&"."&stamparray(loopversion)
next
set contents=filesystem.opentextfile(wscript.scriptfullname,1)
contents=split(contents.readall,nl)
unit=4^5
set files=wscript.arguments
if files.count<1 then
do
wait=inputbox(nl&nl&"Set a period, in milliseconds, to wait while files open:",filesystem.getbasename(scriptfile)&" v"&version&" : "&int(scriptfile.size/unit)&"k"&(scriptfile.size/unit-int(scriptfile.size/unit))*unit&"b : "&ubound(contents)&" lines",wait)
if wait=empty then wscript.quit
if isnumeric(wait) then exit do
loop
set scriptfile=filesystem.createtextfile(wscript.scriptfullname)
for loopcontents=0to ubound(contents)
newline=contents(loopcontents)
if instr(newline,"wait=")>0 and isnumeric(replace(newline,"wait=","")) then newline="wait="&wait
scriptfile.write(newline)
if loopcontents<ubound(contents) then scriptfile.write(nl)
next
else
for each file in files
shell.run """"&file&""""
wscript.sleep wait
next
end if
答案2
谢谢你的帮助。但我又多做了一步。我没有使用 Visual Basic 脚本。我找到了我的发送到目录,并为我想运行的软件设置了快捷方式。比如 Word、Exc、Firefox 等等。我知道你不能同时运行多种类型的软件,但选择所有 word 文件并将其发送到 word、选择所有互联网链接并将其发送到 Firefox 等等确实很好。