计数器读取和写入txt文件 - vbscript

时间:2016-06-22 07:25:50

标签: vbscript

我有一个脚本作为订阅文件C:\ tmp \ yourtextfile.txt的计数器:

Set myFSO = CreateObject ("Scripting.FileSystemObject")
Licznik_ID = myFSO.OpenTextFile ("C:\tmp\yourtextfile.txt"). ReadAll
Licznik_ID + 1 = Licznik_ID
myFSO.OpenTextFile ( "C:\tmp\yourtextfile.txt", 2, True) .write (Licznik_ID)

如何做到这一点,而不是以这种方式计算计数器:

1 2 3 4 五 6 7 8 9 10 11 e.t.c。

计数器以下列方式读取并保存文件到C:\ tmp \ yourtextfile.txt?

00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 00000010 00000011 e.t.c。

2 个答案:

答案 0 :(得分:2)

您需要首先阅读文本,使用拆分获取最后一部分,将其转换为数字,添加1,将该字符串连接起来并写入文件。 在这里你的改编脚本

Function PadZeros(s, l)
  PadZeros = Right("00000000" & s, l)
End Function

Dim myFSO, Licznik_ID, txt, arr
Set myFSO = CreateObject ("Scripting.FileSystemObject")
txt = myFSO.OpenTextFile ("C:\tmp\yourtextfile.txt").ReadAll
arr = split(txt, " ")
Licznik_ID = arr(UBound(arr))
txt = txt & " " & PadZeros(CInt(Licznik_ID)+1, 8)
myFSO.OpenTextFile ("C:\tmp\yourtextfile.txt", 2, True).write (txt)

作为一个额外的:因为我在这里切换到Ruby这个语言的等价物来向你展示Ruby的力量

filename = "C:/tmp/yourtextfile.txt"

txt = File.read(filename)
txt += " %08d" % ((txt.split.last.to_i)+1).to_s
File.write(filename, txt)

或作为一行

File.read(filename).tap {|txt| File.write(filename, txt + " %08d" % ((txt.split.last.to_i)+1))}

它几乎解释了自己,%08d是字符串的格式化模板,它接受数字并添加到8个前导零,tap方法枚举对象,在这种情况下是文件的最后一行

答案 1 :(得分:0)

首先,你测试过这段代码吗?因为它不应该工作..

您应该将此行Licznik_ID + 1 = Licznik_ID替换为Licznik_ID = Licznik_ID + 1

现在,为了在vbscript中用前导零填充数字,你必须为此编写一个函数。您可以使用以下代码:

Function LPad(str, l)
  Dim n : n = 0
  If l > Len(str) Then n = l - Len(str)
  LPad = String(n, "0") & str
End Function

Set myFSO = CreateObject ("Scripting.FileSystemObject")
Licznik_ID = myFSO.OpenTextFile ("C:\tmp\yourtextfile.txt").ReadAll
Licznik_ID = Licznik_ID + 1
myFSO.OpenTextFile("C:\tmp\yourtextfile.txt", 2, True).write(LPad(Licznik_ID, 8))

LPad(Licznik_ID, 8)在您的号码中添加前导零以生成八位数字。您可以使用首选数字替换8

希望有所帮助:)