gpt4 book ai didi

arrays - VBScript 从目录中不存在的 txt 文件和列表中读取多个文件名

转载 作者:行者123 更新时间:2023-12-02 04:38:34 25 4
gpt4 key购买 nike

我是 VB 脚本的新手,我试图找到一种方法:

  1. 读取特定文本文件中以文本行形式编写的文件名列表。
  2. 检查这些文件是否与脚本存在于同一目录中。
  3. 将不存在的文件名写入输出文件(missing.txt)

根据我的研究,似乎一个好的方法是使用 FSO 并读取整个文本文件,创建一个数组,然后循环检查该文件是否存在于目录中,然后记录到“missing.txt” "如果没有。

但是,这样做,会不会因为.txt中的文件名是字符串而目录中的文件本身是对象而导致类型不匹配?

我如何比较它?我可以从概念上理解这一点,但我不知道从哪里开始语法。

感谢您的帮助。

最佳答案

正如您所说的,您是 vbscript 的新手,而且您似乎是 Stack Overflow 的新手,我想我会尽力为您提供一些帮助。

您不必将整个文件存储为数组。您需要做的就是将输入文件逐行处理为文本:检查每行文本是否作为文件名存在。

让我们为示例假设以下细节:

filelist.txt {将包含要查找的文件列表的文件}

file1.txt
file2.txt
file3.txt
file7.txt

目录列表 {您将从中运行脚本的文件夹}

 Directory of C:\lazy-code-handed-over-on-silver-plate\files

06/06/6666 06:66 PM <DIR> .
06/06/6666 06:66 PM <DIR> ..
06/06/6666 06:66 PM 666 file1.txt
06/06/6666 06:66 PM 666 file2.txt
06/06/6666 06:66 PM 666 file4.txt
06/06/6666 06:66 PM 666 file5.txt
4 File(s) 2664 bytes
2 Dir(s) 6,666,666,666,666 bytes free

我们的例子

filelist.txt 文件包含file1.txt file2.txt file3.txt file7 .txt.

目录包含file3.txtfile7.txt

我们基于这些参数的脚本预期输出如下:

missing.txt {列出缺失文件的结果输出文件}

file3.txt
file7.txt

脚本

这里有一个脚本可以帮助您实现这一点(我在每个相关行的最右侧添加了注释):

Option Explicit                                                               ' .. Just coz.
Const forReading = 1 ' Set our constants for later.
Const forWriting = 2 ' ....

Dim inputFile, outputFile, fso, fileList, logFile, fileSpec ' Dimension our variables

inputFile = "filelist.txt" ' Our input file
outputFile = "missing.txt" ' Our output file

Set fso = CreateObject("Scripting.FileSystemObject") ' Set up fso
Set fileList = fso.OpenTextFile(inputFile, forReading) ' Open our input file for reading
If Not (fso.FileExists(outputFile)) Then fso.CreateTextFile(outputfile) ' Create output file if it doesn't exist
Set logFile = fso.OpenTextFile(outputFile, forWriting) ' Open up our output file for writing later

Do while not fileList.AtEndOfStream ' While we have lines to process do this loop
fileSpec = fileList.ReadLine() ' Read in line of text as variable fileSpec
If Not (fso.FileExists(fileSpec)) Then ' If it doesnt exist ....
logFile.writeline (fileSpec) ' ....Write it out to the output file
End If
Loop

fileList.close ' Clean up
logFile.close ' ..

希望对您有所帮助。祝你今天过得愉快。 :)

关于arrays - VBScript 从目录中不存在的 txt 文件和列表中读取多个文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com