在 Vista 上一次打开超过 15 个文件

在 Vista 上一次打开超过 15 个文件

在 Windows Vista 中,如果您选择了 15 个文件(例如文本文件),则可以右键单击并选择“打开”(或该文件类型的默认操作)。如果您选择了 16 个文件,则“打开”将从列表中消失。

有什么方法可以延长或者取消这个限制吗?

答案1

看一看这里。我还没有测试过,但它看起来像你想要的解决方案 - 虽然有点黑客。


我已经尽可能地格式化了,但 markdown 不喜欢 ,e。

Windows Vista 的系统外壳是由 Microsoft 特意构建的,以便...

  1. 当同时选择各种类型的文件时,系统 shell 将无法访问打开这些文件的选项,无论是通过上下文菜单还是键盘(即按 {Enter})。这是由文件扩展名控制的,而不是由处理文件的程序控制的(例如,当同时选择 *.doc 和 *.docx 文件时会发生这种情况)。
  2. 当选择超过 15 个(即 16 个或以上)相同类型的文件时,会发生相同的事件。

这是由微软高级开发人员 Zack Robinson 记录的,这是一种解决两个问题并将解决方案放在上下文菜单中的解决方法。

它只需要创建一个 Visual Basic 脚本并在“发送到”文件夹中创建它的快捷方式。

  1. 创建或下载(将其扩展名重命名为 *.vbs)附加到此帖子的脚本(代码发布如下)。

  2. 创建它的快捷方式并将快捷方式放在“发送到”文件夹中。如果找不到“发送到”文件夹,请按 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 等等确实很好。

相关内容