Vbscript - OpenTextFile不起作用

时间:2017-06-29 17:10:36

标签: vbscript

抱歉,我遇到了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

1 个答案:

答案 0 :(得分:1)

阅读并应用OpenTextFile Method参考:

  

打开指定的文件并返回可以的TextStream对象   用于读取,写入或附加到文件。

     

语法

object.OpenTextFile(filename[, iomode[, create[, format]]])
     

参数

     
      
  • object   必需。对象始终是FileSystemObject
  • 的名称   
  • filename 必需。用于标识要打开的文件的字符串表达式。
  •   
  • iomode   可选。可以是以下三个常量之一:ForReadingForWritingForAppending
  •   
  • 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