抱歉,我遇到了OpenTextFile的问题 很久以前我创建了一个脚本,但是昨天它开始给我带来问题,我很困惑为什么要这样做,它正在清除文本文件并给我错误
Set objArgs = WScript.Arguments
myFile = objArgs(0)
numberofTXT = objArgs(1)
line = objArgs(2)
Set f = CreateObject("Scripting.FileSystemObject").OpenTextFile(myFile, line)
d = f.ReadLine
Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile=numberofTXT
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write d & vbCrLf
objFile.Close
我在cmd中如此运行,如果我使用args of LOL.txt运行命令Hi.txt 1它取1并将其放入
Set f = CreateObject("Scripting.FileSystemObject").OpenTextFile(myFile, line)
有线有价值的 然后我让它阅读TextFile
d = f.ReadLine
然后我让它写入文件" Hi.txt"
Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile=numberofTXT
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write d & vbCrLf
objFile.Close
注意:我是这个表格的新手,我想要例子
编辑:它不再使用第1行,文本文件有1行以上
FILE尝试使用:https://pastebin.com/Cd5z8BHH
答案 0 :(得分:1)
阅读并应用OpenTextFile
Method参考:
打开指定的文件并返回可以的TextStream对象 用于读取,写入或附加到文件。
语法的
object.OpenTextFile(filename[, iomode[, create[, format]]])
参数的
- 的名称
object
必需。对象始终是FileSystemObject
。filename
必需。用于标识要打开的文件的字符串表达式。iomode
可选。可以是以下三个常量之一:ForReading
,ForWriting
或ForAppending
。create
可选。布尔值,指示如果指定的文件名不存在,是否可以创建新文件。价值 如果创建了新文件,则为True
,如果未创建,则为False
。如果 省略,不会创建新文件。format
可选。三个三态值中的一个用于指示打开文件的格式(TristateTrue = -1
以打开文件为 Unicode,TristateFalse = 0
以ASCII格式打开文件,TristateUseDefault = -2
打开文件作为系统默认值)。如果 省略,文件以ASCII格式打开。设置的
iomode
参数可以具有以下任何设置:Constant Value Description ForReading 1 Open a file for reading only. You can't write to this file. ForWriting 2 Open a file for writing. ForAppending 8 Open a file and write to the end of the file.
同时阅读CreateTextFile
Method参考。然后,以下评论代码段可以提供帮助:
Const ForReading = 1
Set objArgs = WScript.Arguments
myFile = objArgs(0) ' file to read
numberofTXT = objArgs(1) ' file to write
line = objArgs(2) ' line serial number to write into output file
' (or number of lines?)
Set objFSO = CreateObject("Scripting.FileSystemObject")
outFile=numberofTXT
Set objFile = objFSO.CreateTextFile(outFile,True)
Set f = objFSO.OpenTextFile(myFile, ForReading)
lineindex = 1
Do until f.AtEndOfStream
d = f.ReadLine
if lineindex = line Then ' only take the line-th line
objFile.Write d & vbCrLf ' or objFile.WriteLine d
Exit Do ' transfers control to the statement immediately following Loop statement
End If
lineindex = lineindex + 1
Loop
objFile.Close
f.Close