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

计数器读取和写入txt文件-vbscript,vbscript,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)

我有一个脚本作为计数器订阅文件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)
如何做到这一点,而不是以这种方式计算计数器:

一, 2. 3. 4. 5. 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.

您需要首先读取文本,使用split获取最后一部分,将其转换为数字,添加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方法枚举对象,在本例中是文件的最后一行。首先,您测试过这段代码吗?因为它不应该起作用

您应该将此行
Licznik\u ID+1=Licznik\u ID
替换为
Licznik\u ID=Licznik\u 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


希望有帮助:)

对于这种情况,使用
Right
函数不是正确的方法,因为它将为任何带有
l+n
数字的数字生成错误的结果,其中
n>0
@Genius,有其他方法,例如使用String方法,但在这种情况下Right就足够了,更短,更快,你的方法也可能被欺骗。很重要。我们能做到每个数字计数器都已保存,后者是txt文件中唯一的一个吗?因此,不在00001 00002 00003之内,而是可以这样做:00003或记住最后一个数字。你好,彼得。很重要。我们能做到每个数字计数器都已保存,后者是txt文件中唯一的一个吗?因此,不必在00001 00002 00003内,而是可以这样做:00003或记住最终计数的最后一位数字。当然,您只需要将第10行更改为txt=PadZeros(CInt(Licznik_ID)+1,8)testje2.vbs(9,1)运行时Microsoft VBScript:Typen komen niet met elkaar overeen:“Licznik_ID”你好。很重要。我们能做到每个数字计数器都已保存,后者是txt文件中唯一的一个吗?因此,可以不在00001 00002 00003内,而是这样做:00003或记住最终计数的最后一位数字。为了创建CSV文件,除了写下而不是写在右边,是否还可能有其他内容?