Batch-Script für die Messung der Netzwerkgeschwindigkeit
Moin zusammen,
ich habe mich gerade eben hingesetzt, und eines meiner Scripte ein wenig zeigbar überarbeitet. Da die eine oder andere Idee zu dem Script von hier kommt, möchte ich dieses hier veröffentlichen.
Ich hoffe, das ich bei meiner Codeaufräumaktion keinen Murks gemacht habe.
Das Script wird auf einem Server abgelegt und dann vom Client aus gestartet. Ausführungsort muss das Verzeichnis des Scriptes sein. Das Script kopiert dann einige Dateien und misst die benötigte Zeit. Die Werte werden samt einiger Formeln in eine CSV geschrieben. Mit einer Tabellenkalkulation ala Libreoffice Calc lässt die Datei sich dann öffnen und weiter bearbeiten.
Kommentare werden gerne entgegen genommen
Gruß Krämer
ich habe mich gerade eben hingesetzt, und eines meiner Scripte ein wenig zeigbar überarbeitet. Da die eine oder andere Idee zu dem Script von hier kommt, möchte ich dieses hier veröffentlichen.
Ich hoffe, das ich bei meiner Codeaufräumaktion keinen Murks gemacht habe.
Das Script wird auf einem Server abgelegt und dann vom Client aus gestartet. Ausführungsort muss das Verzeichnis des Scriptes sein. Das Script kopiert dann einige Dateien und misst die benötigte Zeit. Die Werte werden samt einiger Formeln in eine CSV geschrieben. Mit einer Tabellenkalkulation ala Libreoffice Calc lässt die Datei sich dann öffnen und weiter bearbeiten.
@echo off
cls
::Batch-Script zur Messung der Netzwerkgeschwindigkeit
::Geschrieben von: https://administrator.de/user/kraemer/
::
::Das Script schreibt seine Ergebnisse in das Verzeichnis, aus dem es aufgerufen worden ist.
::Dieses Verzeichnis sollte auf einem Server liegen ;-)
::Die Zugriffsberechtigungen sind entsprechend zu setzen ^^
::Die TMP-Dateien die auf dem Server erstellt werden, werden nicht automatisch gelöscht, da diese in Normalfall mehrfach genutzt werden.
::CSV-Aufbau: Computer, Startzeit, Endezeit, verbrauchte Zeit, MB/s, Mbit/s
::Konfiguration
set FormelDauer="=ZEITWERT(INDEX(D:D))-ZEITWERT(INDEX(C:C))"
set FormelMbS="=(INDEX(B:B)/INDEX(E:E))/(24*60*60)"
set FormelMbitS="=(INDEX(B:B)/INDEX(E:E))/(24*60*60)*8"
set ScriptLocation=%~dp0
::Programmablauf
::Hier einfach die StartCopy-Funktion mit den gewünschten Größen einfügen
call:StartCopy "1"
call:StartCopy "5"
call:StartCopy "50"
pause
goto:eof
:StartCopy
::Prüfen ob TMP-Datei vorhanden
if not exist %ScriptLocation%%~1MB.tmp call:CreateTmp %~1
::Beginn ermitteln
set StartTime=%time%
echo Beginn der Messung: %StartTime%
::Datei kopieren
copy %ScriptLocation%%~1MB.tmp %temp%\
::Werte in CSV eintragen
echo %computername%;%~1;%StartTime%;%time%;%FormelDauer%;%FormelMbS%;%FormelMbitS% >>%ScriptLocation%Zeiten.csv
echo Ende der Messung: %time%
::Prüfen ob Versuch überhaupt erfolgreich
fc %ScriptLocation%%~1MB.tmp %temp%\%~1MB.tmp |if %errorlevel%==1 echo %computername% meldet Fehler beim kopieren von %~1MB.tmp >>%ScriptLocation%Fehler.txt
::lokal Aufräumen
del %temp%\%~1MB.tmp
goto:eof
:CreateTmp
::Temporäre Datei erstellen
set TmpMB=%~1
set TmpMulti=1048576
set /a TmpByte=%TmpMB%*%TmpMulti%
fsutil file createnew %ScriptLocation%%~1MB.tmp %TmpByte%
goto:eof
Kommentare werden gerne entgegen genommen
Gruß Krämer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305777
Url: https://administrator.de/tutorial/batch-script-fuer-die-messung-der-netzwerkgeschwindigkeit-305777.html
Ausgedruckt am: 15.01.2025 um 10:01 Uhr
10 Kommentare
Neuester Kommentar
Moin.
Für einen Netzwerkbenchmark rate ich davon ab, Dateien zu kopieren, da bei Deinem Vorgehen das Dateisystem, Storagetreiber, Storageauslastung und etwaige Störfaktoren wie Virenscanner mit reinspielen. Seit Jahr und Tag ist meine Empfehlung netio http://www.ars.de/ars/ars.nsf/docs/netio
Für einen Netzwerkbenchmark rate ich davon ab, Dateien zu kopieren, da bei Deinem Vorgehen das Dateisystem, Storagetreiber, Storageauslastung und etwaige Störfaktoren wie Virenscanner mit reinspielen. Seit Jahr und Tag ist meine Empfehlung netio http://www.ars.de/ars/ars.nsf/docs/netio
Hi,
Ansich ein ganz cooles und praktisches Script.
Aber auch bei mir lässt es sich nicht vollständig in Excel (2010) darstellen.
Die CSV Datei:
Viele Grüße
pelzfrucht
Ansich ein ganz cooles und praktisches Script.
Aber auch bei mir lässt es sich nicht vollständig in Excel (2010) darstellen.
Die CSV Datei:
CLIENT;1;21:02:35,53;21:02:35,68;"=ZEITWERT(INDEX(D:D))-ZEITWERT(INDEX(C:C))";"=(INDEX(B:B)/INDEX(E:E))/(24*60*60)";"=(INDEX(B:B)/INDEX(E:E))/(24*60*60)*8"
CLIENT;5;21:02:36,41;21:02:37,01;"=ZEITWERT(INDEX(D:D))-ZEITWERT(INDEX(C:C))";"=(INDEX(B:B)/INDEX(E:E))/(24*60*60)";"=(INDEX(B:B)/INDEX(E:E))/(24*60*60)*8"
CLIENT;50;21:02:38,88;21:02:43,61;"=ZEITWERT(INDEX(D:D))-ZEITWERT(INDEX(C:C))";"=(INDEX(B:B)/INDEX(E:E))/(24*60*60)";"=(INDEX(B:B)/INDEX(E:E))/(24*60*60)*8"
Viele Grüße
pelzfrucht
Hallo Zusammen.
Excel funktioniert etwas anders.
1.) ZEITWERT führt zu einem Fehler, da die Zeiten automatisch richtig erkannt und formatiert werden. Sie liegen in der Exceltabelle also nicht mehr als Text vor.
2.) INDEX benötigt bei Excel mehr als einen Parameter. Die ZEILE Funktion hilft.
Da das Parsen als valide Formeln fehlschlägt, werden sie als Text angezeigt.
Probiert mal mit folgender Änderung im Batchscript (Zeilen 12-15 im Original)
Grüße
rubberman
Excel funktioniert etwas anders.
1.) ZEITWERT führt zu einem Fehler, da die Zeiten automatisch richtig erkannt und formatiert werden. Sie liegen in der Exceltabelle also nicht mehr als Text vor.
2.) INDEX benötigt bei Excel mehr als einen Parameter. Die ZEILE Funktion hilft.
Da das Parsen als valide Formeln fehlschlägt, werden sie als Text angezeigt.
Probiert mal mit folgender Änderung im Batchscript (Zeilen 12-15 im Original)
::Konfiguration
set FormelDauer="=INDEX(D:D;ZEILE())-INDEX(C:C;ZEILE())"
set FormelMbS="=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)"
set FormelMbitS="=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)*8"
rubberman
Abend,
Hab deine erwähnten Änderungen vorgenommen.
Jetzt werden die Felder zwar als Werte erkannt, aber anscheinend fehlerhaft.
Zeiten.csv
Viele Grüße
pelzfrucht
Hab deine erwähnten Änderungen vorgenommen.
Jetzt werden die Felder zwar als Werte erkannt, aber anscheinend fehlerhaft.
Zeiten.csv
CLIENT;1; 1:06:59,63; 1:06:59,79;"=INDEX(D:D;ZEILE())-INDEX(C:C;ZEILE())";"=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)";"=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)*8"
CLIENT;5; 1:07:00,32; 1:07:00,90;"=INDEX(D:D;ZEILE())-INDEX(C:C;ZEILE())";"=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)";"=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)*8"
CLIENT;50; 1:07:02,72; 1:07:08,26;"=INDEX(D:D;ZEILE())-INDEX(C:C;ZEILE())";"=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)";"=(INDEX(B:B;ZEILE())/INDEX(E:E;ZEILE()))/(24*60*60)*8"
Viele Grüße
pelzfrucht
Hallo pelzfrucht
Ich vergaß zu erwähnen, dass das Script nur zwischen 10:00 und 23:59 funktioniert
Das Zeitformat in der Kommandozeile ist schuld. Bei einstelligen Stunden gibt es statt der führenden 0 ein Leerzeichen, was Excel nicht kapiert.
Zeile 30
Zeile 35
Grüße
rubberman
Ich vergaß zu erwähnen, dass das Script nur zwischen 10:00 und 23:59 funktioniert
Das Zeitformat in der Kommandozeile ist schuld. Bei einstelligen Stunden gibt es statt der führenden 0 ein Leerzeichen, was Excel nicht kapiert.
Zeile 30
set StartTime=%time: =%
Zeile 35
echo %computername%;%~1;%StartTime%;%time: =%;%FormelDauer%;%FormelMbS%;%FormelMbitS%>>%ScriptLocation%Zeiten.csv
Grüße
rubberman