<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un dossier avec 365 fichiers .csv. Je souhaite convertir chaque fichier .csv en fichier .jmp et supprimer certaines colonnes du fichier .jmp, puis enregistrer le fichier .jmp avec le nom du fichier .csv et quitter JMP. Tout cela doit être fait automatiquement avec un script JSL.
J'ai déjà un script batch, qui démarre un script JSL et transmet un fichier .csv au script JSL. Le script JSL ouvre ensuite le fichier .csv et supprime les colonnes que je souhaite supprimer.
J'ai un problème lorsqu'il s'agit d'enregistrer le fichier .jmp et de quitter JMP avec le script JSL pour que le script batch démarre avec le prochain fichier .csv à ouvrir avec le script JSL.
Le fichier .jmp ne sera pas enregistré et par conséquent JMP ne se ferme pas, de sorte que tout mon processus par lots s'arrête, car mon script par lots attend que JMP soit fermé.
J'ouvre les fichiers .csv selon la réponse de l'utilisateur "twaintwist" au bas de cette discussion : Passer des paramètres au script JSL
Tous mes fichiers .csv + le script batch + le script .jsl sont dans le même dossier.
Cette solution fonctionne bien pour moi, voici donc mon script batch :
pour %%f dans (*.csv) faites (
echo fileName = "%%~nf.csv";>file.txt
copier /y /b fichier.txt+myScript.jsl temp.jsl
JMP temp.jsl
délai d'attente / t 5
del %%~nf.csv
délai d'attente / t 5
supprimer le fichier.txt
délai d'attente / t 5
du temp.jsl
)
pause
Mon script JSL ouvre ensuite le fichier .csv remis par le script .bat et supprime certaines colonnes. Mais après avoir supprimé les cloumns, il semble que mon script JSL s'arrête.
Le fichier .jmp ne sera pas enregistré et JMP ne se fermera pas. Comme vous pouvez le voir dans le script, j'ai essayé différentes méthodes pour enregistrer et fermer la fenêtre avec JSL.
Voici donc mon script JSL :
doc = Ouvrir (nom de fichier);
dt = Table de données actuelle ();
// Désactive la mise à jour de l'affichage pour permettre une mise à jour rapide d'une table de données.
dt << Commencer la mise à jour des données ;
ListeCol = {
//#COLONNES À SUPPRIMER#
} ;
dt << Supprimer les colonnes (ColList);
dt << Fin de la mise à jour des données ;
nomLongueur = Longueur(nomFichier);
fielName = Gauche (fileName, nameLength - 3);
Nom = nom de fichier || "jmp" ;
dt<
doc<
attendez (10);
Fermer (dt, nosave) ;
Fermer (doc, NoSave);
//doc << fermer la fenêtre ;
//dt<
//Fermer tout (Tableaux de données, save(fileName+"jmp"));
Quitter (nosave);
Quitter (nosave);
Vous pouvez planifier des scripts JSL tout comme vous pouvez planifier des fichiers .bat.
Ajouter un '//!' à la première ligne de votre script OU changez le .jsl en .rpt et il s'exécutera automatiquement une fois ouvert.Ensuite, demandez simplement à votre planificateur Windows de pointer vers le script JMP au lieu du fichier batch.
Je dis juste.
Malheureusement, ce processus appartient à un système plus grand et je dois pouvoir le planifier avec le planificateur Windows, j'aurai donc besoin du .BAT de toute façon, mais merci de me rappeler que cela ne peut être fait qu'en JSL 
Super, content que ça marche.
Vous pouvez également faire tout cela en JSL sans fichier .BAT.Cela pourrait (ou non) simplifier votre processus global.JSL dispose d'une fonction FilesInDirectory et de puissantes fonctions de manipulation de chaînes qui peuvent créer et valider des noms de fichiers.Si votre solution actuelle est trop lente en raison d'attentes, de délais d'attente et du démarrage/arrêt répété de JMP, vous souhaiterez peut-être éliminer le fichier .BAT.
Merci beaucoup! Votre solution a résolu mon problème...
En tant que débutant total en JSL, je ne savais pas qu'il existait quelque chose comme un journal.
En vérifiant le journal, j'ai remarqué que ma fonction de suppression de colonnes ne fonctionnait pas aussi correctement que je le pensais, car j'avais mal saisi l'un des noms de colonne et la fonction s'est donc arrêtée.
Néanmoins, fermer dt et doc était également une erreur, mais ce n'était finalement pas un trop gros problème.
Encore une fois merci pour votre aide !
Vérifiez le journal JSL pour les messages.la fermeture de dt et doc pourrait être un problème ; c'est la même table ?