2 votes

Comment lire un fichier texte en chiffres et obtenir la valeur totale de ces chiffres ?

Je travaille actuellement sur un script pour savoir combien de stockage libre il y a. Le script vérifie une base de données pour trouver les noms des magasins puis les interroge en utilisant CMD. Il produit ensuite un fichier avec tout le stockage restant. Je ne parviens pas à trouver un moyen de combiner toutes ces valeurs et de ramener la quantité totale.

script :

Dim objFileSys
Set objFileSys = CreateObject("Scripting.FileSystemObject")
If objFileSys.FileExists("a.txt") Then
    objFileSys.DeleteFile "a.txt"
    WScript.Echo ("old file found and deleted")    
Else
    WScript.Echo ("old file not found, script will continue")
End If

WScript.Sleep 500

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set oShell = WScript.CreateObject ("WScript.Shell")
Dim strRes
Dim strDc
Dim strSpc

objConnection.Open _
    "Provider=SQLOLEDB;Data Source=dls-bsp-sdb;" & _
    "Initial Catalog=DOM_SITE;" & _
    "User ID=*****;Password=*****"
objRecordSet.Open "****", objConnection

Do While Not objRecordSet.EOF 
   WScript.Sleep 1000
   strRes = objRecordset.Fields("Volume").Value
   strDc = ("cmd /c dir /-c " &strRes)+"| find /i ""bytes free"""
   WScript.Echo strRes
   oshell.Run "" & strDc + " >> a.txt"
   'WScript.Echo strSpc
   objRecordSet.MoveNext
Loop

objRecordSet.Close

WScript.Sleep 1000

Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("a.txt", ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "               5 Dir(s)  ", "")
strNewText1 = Replace(strNewText, " bytes free", "")
strNewText2 = Replace(strNewText1, " ", "")

Set objFile = objFSO.OpenTextFile("a.txt", ForWriting)
objFile.WriteLine strNewText2 

objFile.Close

WScript.Sleep 1000

Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("a.txt",1)
Dim strLine

Do While Not objFileToRead.AtEndOfStream
     strLine = objFileToRead.ReadLine()
     wscript.echo strLine
Loop
WScript.Echo strLine
objFileToRead.Close

Cela produit un fichier texte contenant quelque chose comme

15363938635776
4314728202240
4250596589568
15386325426176
9204097486848
15406486990848

Je sais que je peux lire le fichier en utilisant VBScript comme

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("a.txt", ForReading)

Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    WScript.Echo strLine
Loop

objFile.Close

J'ai juste besoin du total au lieu de l'afficher sous forme de texte.

2voto

Matt Cremeens Points 3028

Vous pouvez utiliser une variable accumulatrice

mySum = 0

puis l'enrichir au fur et à mesure que vous bouclerez

Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    mySum = mySum + CLng(strLine)
Loop

mySum contient maintenant votre total.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X