问题标签 [fso]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4292 浏览

vbscript - 我可以使用 FileSystemObject 使用其索引从文件夹中获取单个文件吗?

如果文件夹中只有一个文件,我可以在知道其名称或遍历文件夹中的文件的情况下提取它吗?

(代码是 VBS,但它可以是任何东西,FSO 是这里有趣的部分。)

这对我不起作用:

也没有WScript.Echo myfiles(0).Path工作。(索引 0,1 已测试,均失败。)

使用 for each 只获取一个文件似乎有点过头了。另外,我不应该能够以某种方式迭代一个简单的For循环,而不是一个For Each? 所以必须有索引......我似乎无法找到它们。

0 投票
1 回答
206 浏览

vbscript - 如果目标存在则删除,如果错误则复制到目标移动到下一个

我有很久以前编写的 VBScript,用于根据文件名识别 PDF。然后它将数据附加到文件名并将其移动到正确的目录。我这样做是Select Case为了让它循环许多文件名。我现在正在尝试修改脚本以检查具有新名称的文件是否已经在目标目录中,如果是,则删除旧文件并复制新文件(如果文件已打开且无法覆盖,忽略并移至下一个)。我一直在许多论坛上进行搜索,并且能够找到我正在尝试的部分,但无法成功地将这些流程集成到我的脚本中。这是我的选择案例,这部分是随着“VariableAddedtoFileName”的改变而重复的。

因此,如果我将组中的Set oFSO行更改为它会删除文件,但不会复制新文件。如果重新运行,它会复制文件,因为它不再存在。我尝试了多种尝试操纵语句的组合,但没有运气。我还尝试删除该部分之前的文件,但无济于事。任何帮助将不胜感激。If oFSO.FileExistsoFSO.DeleteFile sDestinationFileifthenif

如果需要我可以提供的完整脚本,我只列出了这一部分,因为它是多次重新运行的部分。另外我知道有多个类似的帖子,但我想弄清楚如何更新我的代码才能工作。

更新:我已经通过使用修复了覆盖CopyFile

但是,如果在尝试覆盖时打开文件,我仍然会收到错误消息。

0 投票
1 回答
846 浏览

vbscript - 区分“文件不存在”和“访问被拒绝”

在 VBScript 中,我想知道文件是否存在:

我的文件在内部网络上。

有没有办法区分:

  • 文件确实不存在
  • 拒绝访问

我尝试过,fso.OpenTextFile但这两种情况的结果始终是:Err.Number= 5。

0 投票
0 回答
1384 浏览

vbscript - 一个非常大的文件夹上的 VBScript Folder.Size 函数不起作用

我正在尝试获取超过 2.5TB 的文件夹的文件夹大小。我收到以下错误 - “文件或目录已损坏且无法读取”,但我可以从 Windows 正常访问该文件夹。

如果这意味着什么,该文件夹不在我的计算机上,它位于我公司的服务器上。

这是我的代码

还有一大堆代码,但 dirSize 是我得到错误的那一行。vbscript 不能在这么长的文件夹上运行脚本吗?

0 投票
1 回答
497 浏览

arrays - 如何确保在使用 FSO 时只打开文本文件 - VBA

目前有一个使用 FSO 的工作脚本,但它也会在我的工作目录中打开 .xlsm 文件。我只想打开 .txt 文件。

我发现这段代码应该可以工作,但是我不知道如何将它应用于我的情况:


我的代码(有效,但也打开 .xlsm 文件,我不希望它这样做):

0 投票
1 回答
180 浏览

excel - VBA用字符串中的另一个对象修剪一个对象(FSO.Getfolder相关)基本上以文件的相对路径结束

我正在目录中构建此文件索引。第 1 列包含文件夹名称,第 2 列包含文件名

我已经设法获得了实际的文件名并已经超链接了文件名。但是我在使用包含其子文件夹的相对路径列出第 1 列中的文件路径时遇到问题。

假设我有以下文件夹:“C:\users\ME\Documents” 在该文件夹内有许多子文件夹。

我想要实现的是一个列出该实际子文件夹路径的字符串。例子:

正如我所说,我可以控制第 2 列。

我已经使用的脚本是

我发现改变
Cells(i + ROW_FIRST - 1, 1) = objFolder.Name

intoCells(i + ROW_FIRST - 1, 1) = objFSO.Getfolder(".")准确地返回了我想从第一个字符串中删除的内容!

所以我基本上想写一个脚本,上面写着:

Cells(i + ROW_FIRST - 1, 1) = objFolder.Name - objFSO.Getfolder(".")

但我需要帮助,因为该命令显然不起作用。

可能有一种完全不同的方法,但由于我的宏已经有很多代码,使用 Trim 或 Replace 或类似的方法是最简单的吗?

编辑: 我的脚本中还有一个名为“GetAllFolders”的函数。也许我可以以某种方式调用它来实现我想要的字符串?

0 投票
1 回答
450 浏览

file - VBscript WMI 找不到文件,FSO 可以

我有两个文件weblogic.jarweblogic.policyC:\Weblogic\wlserver\server\lib使用第一种方法,脚本会找到它们并显示文件名:

当我尝试将 WMI 与 一起使用时CIM_DataFile,脚本在同一文件夹中找不到任何文件(但在其他文件夹中找到了一些文件):

我在 Windows Server 2012 R2 上,我以管理员身份运行脚本,文件夹C:\Weblogic需要管理员权限。

是 WMI 权限问题吗?有人已经有这个问题了吗?解决办法是什么?

编辑:

感谢您的回答。

可悲的是,这行不通。我得到相同的结果。我在同一个脚本上运行 2 方法。我尝试在我的桌面上创建名为 weblogic.jar、weblogic.policy 的测试文件……但 WMI 找不到它们!

也许 WMI 在此服务器上不再正常工作?

这是我的脚本:

结果是:

我没有在文件夹中获取带有 WMI 的 weblogic 文件:“C:\Weblogic\wlserver\server\lib\”“C:...\Desktop\”

0 投票
1 回答
875 浏览

vbscript - VBScript中未定义的变量“文件”

我有这个应该写入目录中每个文件的 VBScript 代码:

但是 Windows Script Host 不断抱怨并告诉我我有一个未定义的变量,名为“file”。错误发生在第 7 行。我不知道为什么会发生此错误,非常感谢您的帮助。

0 投票
3 回答
8243 浏览

excel - 访问具有长路径的文件(超过 260 个)

我正在使用 Microsoft Scripting Runtime (FSO) 来解析文件夹并生成其所有内容的列表,这些文件夹位于网络上,并且生成的路径最终超过 260。我拥有的最低代码如下:-

在某个级别StrFolder长度变为 259 时,Set RootFldr ...文件夹行工作但For Each Fl In RootFldr.Files给出了错误76: Path not found,大概是因为内容导致路径超出 260 限制。

在 Windows 资源管理器中查看时,文件夹中有文件。当我将结果输出到工作簿时,我使用 Excel 作为此代码的主机。

为了对我的问题及其背景非常清楚,我需要使用 FSO(如果存在替代方案,很高兴看到替代方案)来访问其网络路径中深度超过 260 个字符的文件。我需要它作为 FSO,因为我拥有的工具是获取文件夹路径和文件路径、名称、创建和修改的大小。

0 投票
1 回答
712 浏览

vba - Excel VBA + 生成给定文件基名(或类似名称)的完整文件名列表

我需要在文件系统(通常是驱动器)中搜索完全定义的文件路径,同时只给出文件名的一部分。

片段实际上是零件的零件编号,要搜索的文件都是'.idw'类型。此外,它们以有助于对其进行排序的系列命名;即1XX-XXXX.idw,2XX-XXX.idw。

有 50,000 多个文件,仅使用 FileScriptingObject 并递归读取每个文件夹然后比较它们每次搜索大约需要 2 分钟。

(给定零件编号列表,我需要在 Excel 中用完整文件名填充一列)

我猜我最好的解决方法是生成我正在寻找的所有 idw 文件的索引列表,将完整的文件字符串减少为仅基本名称并将其用作键。但是,这仍然需要在每次搜索开始时及时运行,假设我每次运行都一遍又一遍地使用这个字典/集合/列表。

有什么方法可以将字典存储在外部文件中,这样我就可以每天生成一次索引列表或不那么频繁地生成索引列表?

否则,有没有更好的方法来使用我没有想到的 VBA?