我有一个脚本作为订阅文件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。
答案 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
。
希望有所帮助:)