[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 【已解决】vbs:加循环语句出错

本帖最后由 思想之翼 于 2022-11-2 19:23 编辑

下列VBS代码仅对一个文本1.txt进行操作,结果输出为z1.txt。若有300个文本,就要制作300个类似的VBS,欲使之能够依次对1.txt  2.txt  3.txt...300.txt操作(1.txt  2.txt  3.txt...300.txt数据格式一样),结果依次输出为Z1.txt  Z2.txt  Z3.txt...Z300.txt   所以我尝试加了一句循环代码,不想出错了

Set fso = CreateObject("Scripting.FileSystemObject")
For x = 1 to 300
    Set file = fso.OpenTextFile(x & ".txt")

'原先是这句:Set file = fso.OpenTextFile("1.txt")  
m = 1 : Max = 0    'm=总列数,Max=输出最大行数
ReDim arIn(m-1) : ReDim arOut(m-1)

Do Until file.AtEndOfStream
   strLine = RegEx(file.ReadLine)
   If strLine <> "" Then
      ReDim PreServe ar(m-1,n)
      For i = 0 to m-1
         arIn(i) = arIn(i) & "$" & Split(strLine)(i) & " "
         ar(i,n) = arIn(i)
      Next
      n = n + 1
   End If
Loop

For i = 0 to m-1
   For j = CLng(n/2) to 0 step -1
      ar1 = Split(ar(i,n-1),ar(i,j))
      If UBound(ar1) > 1 Then
         For k = 1 to UBound(ar1) - 1
            a = UBound(Split(ar1(k))) - 1
            b = UBound(Split(ar(i,j))) - 1
            If a >= 0 Then
               arOut(i) = arOut(i)&Mid(Split(ar1(k))(a),2)&" "
            Else
               arOut(i) = arOut(i)&Mid(Split(ar(i,j))(b),2)&" "
            End If
         Next
         Exit For
      End If
   Next
   If UBound(Split(arOut(i))) > Max Then Max = UBound(Split(arOut(i)))
Next

For i = 0 to Max - 1
   For j = 0 to m-1
      If UBound(Split(arOut(j))) >= i Then
         strOut = strOut & Split(arOut(j))(i) & vbTab
      Else strOut = strOut & vbTab
      End If
   Next
   strOut = Left(strOut,Len(strOut)-1) & vbCrLf
Next


fso.OpenTextFile("z" & x & ".txt",2,true).Write strOut
'原先是这句:fso.OpenTextFile("z1.txt",2,True).Write strOut  

CreateObject("Wscript.Shell")

Function RegEx(strLine)
   Set re = New RegExp
   re.Pattern = "\s+"
   re.Global = True
   RegEx = Trim(re.Replace(strLine," "))
End Function
Next x
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# apang
谢谢您的帮助
按您指点修改了代码,还显示出错:

z1.txt文本可以输出,之后就出现下面的出错警告。我看了一下,z1.txt比z2.txt多1行数据,比z3.txt多2行数据,...可能z2.txt   z3.txt...z300.txt数据行数与z1.txt不一致,导致出错。如何修改?恳望指点。

TOP

回复 4# apang

谢谢您给予的大力帮助!

TOP

返回列表