Werteuebergabe von csv-file in Javascript
Hallo zusammen,
fuer mein Studium muss ich derzeit einen Microcontroller ueber JavaScript programmieren. Das funktioniert auch soweit alles wie es soll, nur habe ich jetzt ein Problem bei der Uebergabe von meinen Werten.
Und zwar moechte ich eine bestehende .csv Datei auswerten (ehemals Excel Datei) in welcher an verschiedenen Stellen ein x steht. Die Excel ist eine Matrix mit verschiedenen Tests(Spalten) und den verschiedenen Testdurchlaeufen(Zeilen).
Die auszufuehrendenen Tests werden mit einem x markiert. fest definiert ist eigentlich nur die Anzahl an Testdurchlaeufen (22Durchlaeufe bei denen jeweils von 28 Tests die gewuenschten tests ausgefuehrt werden koennen).
Das ganze soll letztendlich ueber eine batch gestartet werden.
Wie wuerdet ihr das Problem angehen? oder gibts da vlt eine Alternative Moeglichkeit welche man ohne riessige Einarbeitungsphase hinbekommt? Ich sitze da jetzt schon den ganzen morgen ohne Lichtblick dran...
Die Ausfuehrung ueber eine Bat und einen JS-Script ist leider Vorgabe...
danke schonmal fuer eure Hilfe!
fuer mein Studium muss ich derzeit einen Microcontroller ueber JavaScript programmieren. Das funktioniert auch soweit alles wie es soll, nur habe ich jetzt ein Problem bei der Uebergabe von meinen Werten.
Und zwar moechte ich eine bestehende .csv Datei auswerten (ehemals Excel Datei) in welcher an verschiedenen Stellen ein x steht. Die Excel ist eine Matrix mit verschiedenen Tests(Spalten) und den verschiedenen Testdurchlaeufen(Zeilen).
Die auszufuehrendenen Tests werden mit einem x markiert. fest definiert ist eigentlich nur die Anzahl an Testdurchlaeufen (22Durchlaeufe bei denen jeweils von 28 Tests die gewuenschten tests ausgefuehrt werden koennen).
Das ganze soll letztendlich ueber eine batch gestartet werden.
Wie wuerdet ihr das Problem angehen? oder gibts da vlt eine Alternative Moeglichkeit welche man ohne riessige Einarbeitungsphase hinbekommt? Ich sitze da jetzt schon den ganzen morgen ohne Lichtblick dran...
Die Ausfuehrung ueber eine Bat und einen JS-Script ist leider Vorgabe...
danke schonmal fuer eure Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 218885
Url: https://administrator.de/forum/werteuebergabe-von-csv-file-in-javascript-218885.html
Ausgedruckt am: 13.05.2025 um 05:05 Uhr
26 Kommentare
Neuester Kommentar
Hallo merben,
du kannst Parameter an dein JavaScript-File direkt in der Batch übergeben:
In deinem Javascript-File kannst du dann folgendermaßen auf die Parameter zugreifen:
Grüße Uwe
du kannst Parameter an dein JavaScript-File direkt in der Batch übergeben:
wscript.exe //B //NOLOGO deinScript.js Parameter1 Parameter2
In deinem Javascript-File kannst du dann folgendermaßen auf die Parameter zugreifen:
objArgs = WScript.Arguments;
for (i = 0; i < objArgs.length; i++)
{
WScript.Echo(objArgs(i));
}
Also wenn du uns mal einen Auszug aus deiner CSV-Datei geben könntest, könnten wir dir da etwas zusammenbauen.
Wenn es unbedingt Batch sein muss, ließe sich die CSV-Datei einfach mit einer
Grüße Uwe
Wenn es unbedingt Batch sein muss, ließe sich die CSV-Datei einfach mit einer
FOR /F
Schleife durchlaufen und die jeweiligen Felder auf das "x" hin auswerten und weiterverarbeiten...das ist kein Problem!Grüße Uwe
Moin merben,
das folgende Script setzt jetzt voraus das deine Tests in Spalte 15 stehen. In Zeile 2 musst du noch den Pfad zu deiner CSV-Datei eintragen. Was das Script jetzt macht ist folgendes: Es geht jede Zeile außer der ersten durch prüft ob in der ersten Spalte eine '1' steht und wenn ja hängt es den Wert in Spalte 15 an eine Variable ACTIVETESTS an. In dieser Variablen stehen nachher alle Tests mit Komma voneinander getrennt die durchgeführt werden sollen. In der letzten Zeile wird dann diese Variable als Parameter an dein JavaScript übergeben (die Zeile ist noch durch ein
Hoffe das hilft dir erst mal weiter 
Grüße Uwe
p.s. Warum Ihr alle immer mit Batch arbeiten sollt verstehe wer will ... wir arbeiten ja auch nicht mehr mit DOS 6.2 ...
Ich glaube die alten Profs können nicht von Ihren Gewohnheiten lassen, und sind zu faul mal eine neue Sprache zu lernen.
das folgende Script setzt jetzt voraus das deine Tests in Spalte 15 stehen. In Zeile 2 musst du noch den Pfad zu deiner CSV-Datei eintragen. Was das Script jetzt macht ist folgendes: Es geht jede Zeile außer der ersten durch prüft ob in der ersten Spalte eine '1' steht und wenn ja hängt es den Wert in Spalte 15 an eine Variable ACTIVETESTS an. In dieser Variablen stehen nachher alle Tests mit Komma voneinander getrennt die durchgeführt werden sollen. In der letzten Zeile wird dann diese Variable als Parameter an dein JavaScript übergeben (die Zeile ist noch durch ein
echo
quasi auskommentiert damit du überprüfen kannst ob die richtigen Tests übergeben werden.@echo off & setlocal EnableDelayedExpansion
set "CSVFILE=c:\csv\test.csv"
set ACTIVETESTS=
for /f "usebackq skip=1 delims=" %%a IN ("!CSVFILE!") DO @(
set "line=%%a"
set "line="!line:,=","!""
for /f "tokens=1,15 delims=," %%A IN ("!line!") DO @(
if %%~A == 1 (
if "!ACTIVETESTS!" == "" (
set ACTIVETESTS=%%~B
) else (
set ACTIVETESTS=!ACTIVETESTS!,%%~B
)
)
)
)
echo Folgende Tests werden durgefuehrt: !ACTIVETESTS!
echo wscript.exe //B //NOLOGO JavaScript.js "!ACTIVETESTS!"
Grüße Uwe
p.s. Warum Ihr alle immer mit Batch arbeiten sollt verstehe wer will ... wir arbeiten ja auch nicht mehr mit DOS 6.2 ...
Ich glaube die alten Profs können nicht von Ihren Gewohnheiten lassen, und sind zu faul mal eine neue Sprache zu lernen.
Zitat von @merben:
Hat vlt was erhalten von Traditionen zu tun^^ ich verstehe es auch nicht so recht warum mein Prof so verpicht drauf ist...
er kann wahrscheinlich keine andere Sprache als Batch, und er will sich wahrscheinlich nicht blamieren wenn einer mit Powershell kommt und er keinen Schimmer davon hat...Hat vlt was erhalten von Traditionen zu tun^^ ich verstehe es auch nicht so recht warum mein Prof so verpicht drauf ist...
nur zum Vergleich wie simpel das mit Powershell ist:
import-csv "c:\csv\test.csv" -Delimiter "," | ?{$_.Pruefen -eq 1} | %{$_.TestNr}
OK der erste Teil bis Zeile 36 deines Scripts ist klar, was danach kommt verstehe ich nicht, warum startest du erneut eine Schleife für das JavaScript ? Wir übergeben doch alle Tests als einen Parameter an das JavaScript. In diesem musst du dann den übergebenen Parameter via
Auch wenn ich dein vorgehen jetzt nicht verstehe sollte das hier fehlerfrei gehen...
Split
in ein Array zerlegen und dann für jeden Test eine Subroutine starten...Auch wenn ich dein vorgehen jetzt nicht verstehe sollte das hier fehlerfrei gehen...
cls
@echo off & setlocal EnableDelayedExpansion
set /a times=1 rem Anzahl durchlaeufe
set /a d=0
rem read from *.csv
set "CSVFILE=C:\Users\x0207847\Desktop\test\test.csv"
set ACTIVETESTS=
for /f "usebackq skip=1 delims=" %%a IN ("!CSVFILE!") DO @
(
set "line=%%a"
set "line="!line:,=","!""
for /f "tokens=1,15 delims=," %%A IN ("!line!") DO @
(
if %%~A == 1
(
if "!ACTIVETESTS!" == ""
(
set ACTIVETESTS=%%~B
)
else
(
set ACTIVETESTS=!ACTIVETESTS!,%%~B
)
)
)
)
pause
echo Test settings: !ACTIVETESTS!
pause
rem send to script
wscript.exe //B //NOLOGO tester.js "!ACTIVETESTS!"
ECHO Mit Enter den Test starten
FOR /L %%i IN (1,1,!times!) DO
(
rem actual Cycle
set /a d=!d!+1
ECHO Durchlauf
rem Start script
"C:\ti\ccs55\ccsv5\ccs_base\scripting\bin\dss.bat" tester.js
)
echo complete
Zitat von @merben:
die andere Schleife ist um den Test eine vorgegebene Anzahl durchlaufen zu lassen.
Also wenn er einmal durchgelaufen ist, dass er einfach nochmal aufgerufen wird und erneut laeuft.
Oder macht das so keinen Sinn?
für mich nicht, ich kenn dein JavaScript nicht ....die andere Schleife ist um den Test eine vorgegebene Anzahl durchlaufen zu lassen.
Also wenn er einmal durchgelaufen ist, dass er einfach nochmal aufgerufen wird und erneut laeuft.
Oder macht das so keinen Sinn?
Also wenn der Script-Host wirklich deaktiviert ist gehst du folgendermaßen vor um den Windows Scripting Host zu aktivieren
Wichtig ist wie bei JavaScript üblich auch GROß und klein-Schreibung d.h. WScript sollte z.b. nicht wscript geschrieben werden ...
Grüße Uwe
Drücke die Windowstaste + Buchstabe R und gebe regedit ein.
Es öffnet sich der Registrierungseditor.
Folge diesem Pfad:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Script Host/Settings
Dort lege die Zeichenfolge Enabled an, indem du mit der rechten Maustaste unter die vorhandenen Werte klickst und im Kontextmenü "Neu/Zeichenfolge" anklickst.
Dann einen Doppelklick darauf und den Wert 1 vergeben. Den Registrierungseditor jetzt schließen und den PC neu starten.
Wenn das nicht reicht setzt du den selben wert auch unter
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows Script Host/Settings
Es öffnet sich der Registrierungseditor.
Folge diesem Pfad:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Script Host/Settings
Dort lege die Zeichenfolge Enabled an, indem du mit der rechten Maustaste unter die vorhandenen Werte klickst und im Kontextmenü "Neu/Zeichenfolge" anklickst.
Dann einen Doppelklick darauf und den Wert 1 vergeben. Den Registrierungseditor jetzt schließen und den PC neu starten.
Wenn das nicht reicht setzt du den selben wert auch unter
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows Script Host/Settings
Wichtig ist wie bei JavaScript üblich auch GROß und klein-Schreibung d.h. WScript sollte z.b. nicht wscript geschrieben werden ...
Grüße Uwe
Zitat von @merben:
Wir haben hier Win7. Kann es vlt irgendwelche Hochschul-Software sein die da Probleme macht? Wenn ja waere das naemlich arg bloed...
kann ich nicht sagen, ohne das System genauer zu untersuchen... eventuell TeamViewer-Session wenn du möchtest.Wir haben hier Win7. Kann es vlt irgendwelche Hochschul-Software sein die da Probleme macht? Wenn ja waere das naemlich arg bloed...
hast du mal versucht den Aufruf des Javascripts testweise folgendermaßen zu machen (cscript anstatt wscript):
cscript softreset.js "Argument1,Argument2"
Zitat von @merben:
Muss ich einfach statt WScript dann CScript schreiben? Muss ich im javascript irgendwo WScript bzw CScript aufrufen oder starten
bevor der Befehl aus meinem Snippet kommt?
du startest das Script nur mit dem Kommandozeileninterpreter 'cscript.exe' in der Batch. An deinem Code im JavaScript musst du nichts ändern.Muss ich einfach statt WScript dann CScript schreiben? Muss ich im javascript irgendwo WScript bzw CScript aufrufen oder starten
bevor der Befehl aus meinem Snippet kommt?
Ansonsten pobier das ganze dann mal Zuhause aus, wenn es da geht, kannst du dich bei deinem Prof. beschweren ...
da ist noch irgendein Fehler bei dir drin den ich nicht sehen kann, wenn er bei Zeile 508 auftritt sehe ich eine ganze Menge aus deinem Script nicht !!
Sieht so aus als hättest du auch im Code das WScript in CScript geändert, aber das darfst du nicht, hatte ich ja oben schon geschrieben !
probiers erst mal Zuhause bevor wir hier weitermachen, denn bei mir geht es wie gesagt einwandfrei auf 3 Systemen.
Sieht so aus als hättest du auch im Code das WScript in CScript geändert, aber das darfst du nicht, hatte ich ja oben schon geschrieben !
probiers erst mal Zuhause bevor wir hier weitermachen, denn bei mir geht es wie gesagt einwandfrei auf 3 Systemen.