在VBscript中写入/读取具有自定义扩展名的外部文件

在VBscript中写入/读取具有自定义扩展名的外部文件,vbscript,file-extension,Vbscript,File Extension,如何使用VBscript编写或读取具有自定义扩展名的外部文件(例如,它可以使用.cyc而不是.txt扩展名) 我不知道怎么做,而且似乎也弄不明白。对于读取文件,是否可以只读取文件的一部分?例如,如果我有一行 string1=你好,世界 在我的文件中,我的脚本如何仅从string1行读取,以及如何将文本值指定给vbscript文件中的字符串 那么,如何将单个值写入文件 为了澄清,我基本上尝试使用外部文件作为配置/数据文件 这可能是一个非常愚蠢的问题,如果是的话,我真的很抱歉 编辑:这是一个由两部分

如何使用VBscript编写或读取具有自定义扩展名的外部文件(例如,它可以使用.cyc而不是.txt扩展名)

我不知道怎么做,而且似乎也弄不明白。对于读取文件,是否可以只读取文件的一部分?例如,如果我有一行

string1=你好,世界

在我的文件中,我的脚本如何仅从string1行读取,以及如何将文本值指定给vbscript文件中的字符串

那么,如何将单个值写入文件

为了澄清,我基本上尝试使用外部文件作为配置/数据文件

这可能是一个非常愚蠢的问题,如果是的话,我真的很抱歉


编辑:这是一个由两部分组成的问题,我需要知道上面指定的读取和写入文件的代码,以及如何使用自定义扩展名。

您需要做的就是在文件名末尾包含扩展名,如下所示:

c:\myfolder\myfile.ext
[owner]
name=John Doe
organization=Acme Products
Dim s as string
s=ReadINI("c:\myfolder\myfile.ext", "owner", "name")
[MySection]
MyItem=MyValue
当您打开文件进行写入时

以下是打开新文件、向其中写入一行文本并关闭文件的一些示例代码:

Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("c:\myfolder\myfile.ext", 2, true)
WriteStuff.WriteLine("Hello World.")
WriteStuff.Close
Set WriteStuff = nothing
Set myFSO = nothing
下面是要读回的代码:

Dim S as String
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set ReadStuff = myFSO.OpenTextFile("c:\myfolder\myfile.ext", 1)
S=Readstuff.ReadLine
ReadStuff.Close
Set ReadStuff = nothing
Set myFSO = nothing

如果您想在任意位置读取和写入文本文件,那么最好使用INI文件

INI文件包含如下所示的条目:

c:\myfolder\myfile.ext
[owner]
name=John Doe
organization=Acme Products
Dim s as string
s=ReadINI("c:\myfolder\myfile.ext", "owner", "name")
[MySection]
MyItem=MyValue
要读取ini文件,您需要一个可以如下调用的函数:

c:\myfolder\myfile.ext
[owner]
name=John Doe
organization=Acme Products
Dim s as string
s=ReadINI("c:\myfolder\myfile.ext", "owner", "name")
[MySection]
MyItem=MyValue
…这将把“约翰·多伊”放在s

执行此操作的代码如下所示:

编写INI文件的工作方式与此相同

下面是另一个例子:

WriteINI("c:\myfolder\myfile.ext", "MySection", "MyItem", "MyValue")
创建如下所示的INI文件:

c:\myfolder\myfile.ext
[owner]
name=John Doe
organization=Acme Products
Dim s as string
s=ReadINI("c:\myfolder\myfile.ext", "owner", "name")
[MySection]
MyItem=MyValue
您可以根据需要在每个部分中包含任意多个不同的部分和项目。要检索所需的值,只需使用要检索的值的节名和项名调用ReadINI即可。

  • 创建文件夹c:\testarea
  • 在刚创建的文件夹中创建一个名为test.vbs的文本文件,并将下面的代码粘贴到其中
  • 双击test.vbs文件以执行它。请注意,它在同一目录中创建了一个test.ini文件。打开test.ini并查看它
  • 这段代码已经过测试,所以我知道它是有效的。我是从你那儿得到的

    函数ReadIni(myFilePath、mySection、myKey) '此函数返回从INI文件读取的值 ' "论据: 'myFilePath[string]INI文件的(路径和)文件名 'mySection[string]INI文件中要搜索的部分 'myKey[string]要返回其值的键 ' “返回: '指定节中指定键的[string]值 ' '警告:如果键存在但值为空,则将返回空格 ' “基思·拉塞尔写的 “由丹尼斯·圣皮埃尔和罗布·范德沃德修改 常数ForReading=1 写入常数=2 出现的常数=8 暗淡的内部轮廓 Dim objFSO,objIniFile 暗斜道,斜道,斜道,斜道,斜道,斜道,斜道 设置objFSO=CreateObject(“Scripting.FileSystemObject”) ReadIni=“” strFilePath=Trim(myFilePath) strSection=修剪(mySection) strKey=修剪(myKey) 如果objFSO.FileExists(strFilePath),那么 设置objIniFile=objFSO.OpenTextFile(strFilePath,ForReading,False) Do While objIniFile.AtEndOfStream=False strLine=Trim(objIniFile.ReadLine) '检查是否在当前行中找到节 如果LCase(strLine)=“[”&LCase(strSection)&“]”,则 strLine=Trim(objIniFile.ReadLine) '解析行,直到到达下一节 在左边做(斯特林,1)“[” '查找行中等号的位置 intEqualPos=InStr(1,strLine,“=”,1) 如果intEqualPos>0,则 strLeftString=修剪(左(strLine,intEqualPos-1)) '检查是否在当前行中找到项 如果LCase(strLeftString)=LCase(strKey),则 ReadIni=修剪(中间(strLine,内部轮廓+1)) '如果项目存在但值为空 如果ReadIni=“”,则 ReadIni=“” 如果结束 '找到项时中止循环 退出Do 如果结束 如果结束 '如果到达INI文件的结尾,则中止 如果是objIniFile.AtEndOfStream,则退出Do '继续下一行 strLine=Trim(objIniFile.ReadLine) 环 退出Do 如果结束 环 objIniFile,关闭 其他的 WScript.Echo strFilePath&“不存在。正在退出…” Wscript.Quit 1 如果结束 端函数 子写入ini(myFilePath、mySection、myKey、myValue) '此子例程将值写入INI文件 ' "论据: 'myFilePath[string]INI文件的(路径和)文件名 'mySection[string]INI文件中要搜索的部分 'myKey[string]要写入其值的键 'myValue[string]要写入的值(myKey将为 '如果myValue为,则已删除) ' “返回: “不适用 ' '注意:WriteIni函数需要ReadIni函数才能运行 ' “基思·拉塞尔写的 由丹尼斯·圣皮埃尔、约翰·波尔和罗布·范德沃德修改 常数ForReading=1 写入常数=2 出现的常数=8 模糊bln节,blnKeyExists,bln节exists,blnwrited 暗淡的内部轮廓 Dim objFSO、objNewIni、objOrgIni、wshShell