如何浏览文件(Win7/64位)

问题描述 投票:0回答:3

我需要通过命令行应用程序快速编写一个简单的 GUI。需要两个步骤:

  1. 指定输入文件路径,
  2. 指定输出文件路径(不存在)

我发现了一篇上一篇文章,但是尝试让上述(1)工作似乎是一项疯狂的任务。

确实 BrowseForFolder 似乎只在某些奇怪的情况下工作,您只能将

BIF_BROWSEINCLUDEFILES
用于
*.pdf
和/或
*.txt
(尝试和错误)。如果我选择
*.dll
和/或
*.jpg
(不要问),我会收到错误消息。

因此,我放弃了这种方法并遵循了另一种,在这种情况下(

objIE.Document.all.FileSelect
),仅返回所选文件的name,由于某种原因路径似乎总是设置为
"c:/fakepath"
。所以我再次错过了能够将其传递给命令行应用程序的完整路径。

有什么明智的方法吗(<10 lines of codes) to get (1) and (2) working on Win7/64bits (VBS, HTA...)?

windows vbscript hta
3个回答
2
投票

不知道人们是否仍然对 BrowseForFolder 文件选择问题感兴趣,但这是我发现的。 我在使用 &H4000 / BIF_BROWSEINCLUDEFILES 与 BrowseForFolder 选择文件时遇到了同样的问题。我可以得到 .docx 的回报,但不能得到 .doc 文件和正如你所说的 .pdf 文件。 对我来说 .txt 不会返回任何内容,就像我正在编写的脚本所需的 WMI Backup .rec 文件一样,导致以下错误信息:-

Error: Unspecified error
Code: 80004005
Source: (null)

在查看了其他解决方案后,我又回到了这个解决方案作为我的首选,而且它让我很头疼,因为它不想工作。所以在痛苦的结局中,这似乎很容易。 为了让我的 .rec 文件被识别,我将其添加到注册表中:-

[HKEY_CLASSES_ROOT\.rec]
@="WMI.Backup"

[HKEY_CLASSES_ROOT\WMI.Backup]
@="WMI Backup"
"BrowseInPlace"="1"

为了识别 .txt 文件,我将其添加到注册表中:-

[HKEY_CLASSES_ROOT\txtfile]
"BrowseInPlace"="1"

所以“BrowseInPlace”=“1”似乎是关键。

看起来非常简单,我确信这个解决方案就在某个地方,但我从未遇到过它,所以我想我会把它放在网上。

我有兴趣发现它对其他人有效,因为我担心这个问题可能会让我发疯,但仍然不敢相信它似乎有效。 希望这有帮助。


0
投票

如果您需要一次只打开一个文件,您可以使用旧式 html 标签 在 IE9 兼容模式下:在此模式下,输入将返回单个选定文件的完整路径。但需要注意的是,您不能对具有接受属性的文件类型使用多个属性或过滤器。

如果您想使用接受和多个属性,您必须将 IE=10 兼容模式设置到元标记内容属性中,以便您可以使用以下组合之一:

<meta charset="UTF-8" http-equiv="x-ua-compatible" content="IE=9"/>
<input type="file"/>

您可以使用 hta 功能,但不能让接受和多个属性用于输入类型=“文件”

<meta charset="UTF-8" http-equiv="x-ua-compatible" content="IE=10"/>
<input type="file" accept="*.txt,*.doc" multiple />

在这种情况下反之亦然,但代价是失去一些 hta 功能。

当然你必须将meta标签放入hta的head中,并将input标签放入body中。

还有一些解决方法,例如使用两个不同的 hta 文件:

  • main 设置为并处理 HTA:APPLICATION... 标记,并将其主体加载到 iframe 中
  • 内部 hta 文件处理所有 vbs 代码以及所有其余内容。 在这种情况下,您实际上有两个文件,每个文件都会加载 hta 应用程序的自己的部分。

但据我所知,要在一个文件中协调一致地工作并不容易

  • vbs
  • 具有接受和多个属性的输入类型文件
  • HTA:应用程序...标签
  • 还有更多

无需编辑 Win 寄存器或无需使用第三部分 dll 或其他解决方法:因此似乎没有直接而干净的方法可以轻松完成此操作。


-1
投票

这里有 3 种不同的方法可以满足您的需求:

http://www.robvanderwoude.com/vbstech_ui_fileopen.php
© www.soinside.com 2019 - 2024. All rights reserved.