<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe einen Ordner mit 365 .csv-Dateien. Ich möchte jede .csv-Datei in eine .jmp-Datei konvertieren und einige Spalten in der .jmp-Datei löschen, dann die .jmp-Datei unter dem Namen der .csv-Datei speichern und JMP beenden. All dies muss automatisch mit einem JSL-Skript erfolgen.
Ich habe bereits ein Batch-Skript, das ein JSL-Skript startet und eine .csv-Datei an das JSL-Skript übergibt. Das JSL-Skript öffnet dann die .csv-Datei und löscht die Spalten, die ich löschen möchte.
Ich habe ein Problem, wenn es darum geht, die .jmp-Datei zu speichern und JMP mit dem JSL-Skript zu beenden, damit das Batch-Skript mit der nächsten .csv-Datei beginnt, die mit dem JSL-Skript geöffnet wird.
Die .jmp-Datei wird nicht gespeichert und daher wird JMP nicht beendet, sodass mein gesamter Batch-Prozess stoppt, da mein Batch-Skript darauf wartet, dass JMP geschlossen wird.
Ich öffne die .csv-Dateien gemäß der Antwort des Benutzers „twaintwist“ am Ende dieser Diskussion: Übergabe von Parametern an das JSL-Skript
Alle meine CSV-Dateien + das Batch-Skript + das .jsl-Skript befinden sich im selben Ordner.
Diese Lösung funktioniert für mich gut, daher ist hier mein Batch-Skript:
für %%f in (*.csv) tun (
echo fileName = "%%~nf.csv";>file.txt
Kopieren Sie /y /b file.txt+myScript.jsl temp.jsl
JMP temp.jsl
Timeout / t 5
del %%~nf.csv
Timeout / t 5
del file.txt
Timeout / t 5
del temp.jsl
)
Pause
Mein JSL-Skript öffnet dann die vom .bat-Skript übergebene .csv-Datei und löscht einige Spalten. Aber nach dem Löschen der Spalten scheint mein JSL-Skript einfach anzuhalten.
Die .jmp-Datei wird nicht gespeichert und JMP wird nicht beendet. Wie Sie im Skript sehen können, habe ich verschiedene Methoden ausprobiert, um das Fenster mit JSL zu speichern und zu schließen.
Hier ist mein JSL-Skript:
doc = Open(fileName);
dt = Aktuelle Datentabelle();
// Deaktiviert die Anzeigeaktualisierung, um eine schnelle Aktualisierung einer Datentabelle zu ermöglichen.
dt << Datenaktualisierung beginnen;
ColList = {
//#SÄULEN ZU LÖSCHEN#
};
dt << Columns(ColList) löschen;
dt << Datenaktualisierung beenden;
nameLength = Länge(Dateiname);
fielName = Left(fileName, nameLength - 3);
Name = Dateiname || „jmp“;
dt<
doc<
warte(10);
Schließen (dt, nosave);
Schließen (doc, NoSave);
//doc << Fenster schließen;
//dt<
//Alle schließen(Datentabellen, save(fileName+"jmp"));
Exit(nosave);
Beenden(nosave);
Sie können JSL-Skripte genauso planen wie .bat-Dateien.
Füge hinzu ein '//!' in die erste Zeile Ihres Skripts ODER ändern Sie die .jsl-Datei in eine .rpt-Datei und sie wird beim Öffnen automatisch ausgeführt.Lassen Sie Ihren Windows-Planer dann einfach auf das JMP-Skript statt auf die Batchdatei verweisen.
Ich sage es nur.
Leider gehört dieser Prozess zu einem größeren System und ich muss in der Lage sein, ihn mit dem Windows-Scheduler zu planen, daher benötige ich auf jeden Fall die .BAT-Datei, aber danke, dass Sie mich daran erinnert haben, dass dies nur in JSL möglich ist 
Großartig, ich freue mich, dass es funktioniert.
Sie können dies alles auch in JSL ohne eine .BAT-Datei tun.Das könnte Ihren Gesamtprozess vereinfachen (oder auch nicht).JSL verfügt über eine FilesInDirectory-Funktion und leistungsstarke String-Manipulationsfunktionen, mit denen Dateinamen erstellt und validiert werden können.Wenn Ihre aktuelle Lösung aufgrund von Wartezeiten und Zeitüberschreitungen sowie wiederholtem Starten/Stoppen von JMP zu langsam ist, möchten Sie möglicherweise die .BAT-Datei entfernen.
Vielen Dank! Ihre Lösung hat mein Problem gelöst...
Als absoluter JSL-Anfänger wusste ich nicht, dass es so etwas wie ein Protokoll gibt.
Als ich das Protokoll überprüfte, bemerkte ich, dass meine Funktion zum Löschen von Spalten nicht so ordnungsgemäß funktionierte, wie ich dachte, weil ich einen der Spaltennamen falsch eingegeben hatte und die Funktion daher gestoppt wurde.
Allerdings war das Schließen von dt und doc auch falsch, aber das war am Ende kein allzu großes Problem.
Nochmals vielen Dank für Ihre Hilfe!
Überprüfen Sie das JSL-Protokoll auf Nachrichten.Das Schließen von dt und doc könnte ein Problem sein; Sind das derselbe Tisch?