2015-10-23 38 views
-1

我以前从未使用过脚本或vbs文件,而且我最近才熟悉VB。我需要编写一个脚本来打开指定位置的.TS(基本上是.txt)文件,并将它们重命名为在其中找到的ID号。这里是我的代码,到目前为止,我相信它已经不仅仅是这些错误的我可以识别:逐行读取.txt文件,并根据文件中的特定ID号重命名文件使用vbs

Imports System.IO 

Dim folder 
folder = "C:\temp" 

For each file in Directory.GetFiles(folder, "R00*.TS") 

Dim filename 
filename = Path.GetFileName(file).ToString() 

Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile((Path.Combine(folder, filename)), _ 
ForReading) 

Do Until objFile.AtEndOfStream 
objFile.ReadLine 
If line.contains("RECORDER ID:") Then 
    Dim RID 
    RID = line.Substring(13, 24) 
    objFile.close 
    objFSO.MoveFile filename, RID + ".txt" 
    End If 
Loop 
Next 

的的ID号总是在同一个地方显然让我硬编码了它的位置(一旦正确的路线是标识)。我不确定VB和vbs的语法差异(如果有的话)。

我的当前错误的instace - 由Windows脚本宿主给出 - 是“对象要求:系统”代码:800A01A8第1行字符1.我猜我缺少或使用不正确的导入?

回答

1
Imports System.IO 

是VB脚本解释器不知道或需要的.NET构造。

实际上,您将需要创建的CreateObject使用FileSystemObject的一个ActiveX对象(“Scripting.FileSystemObject的”)

你可能想看看这篇文章: MSDN,并记住,VB脚本和VB(.NET)绝对没有什么共同之处,但有些语法。

+0

好了,做完了,现在出现一个错误“Object required:'Directory'”line 5 char 1,它在.net中需要导入。是否有不同的方式通过循环访问本地文件路径中的多个文件? –

+0

对,您需要删除.NET BCL的所有用法,然后使用objFSO。 – SvenAelterman

+0

我先发布的链接有支持的函数列表,例如Set fldr = objFSO.GetFolder(“C:\ Temp”) – SvenAelterman