IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres langages Discussion :

[AutoIt] Exécuter un script AutoIt depuis du Java


Sujet :

Autres langages

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 48
    Par défaut [AutoIt] Exécuter un script AutoIt depuis du Java
    Bonjour,
    J'ai developpé un petit script dans un language bourré de qualité, et ce script découpe un de mes fichier (donnee.txt) en 6 autre fichier en fonction d'un code trouvé dans la ligne.

    ce script ouvre donc des fichiers en lecture et en ecriture, mais la question est Pourquoi quand j'appele ce script avec ce code java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    String cmd2= "C:"+File.separator+"Users"+File.separator+"Administrateur"+File.separator+"Documents"+File.separator+"NetBeansProjects"+File.separator+"src"+File.separator+"Gestionnaire de Stock"+File.separator+"src"+File.separator+"extractDataV3.exe";
        try {
             Runtime r = Runtime.getRuntime();
             Process d=r.exec(cmd2);
             d.waitFor();
            }
        catch(IOException e){
             System.out.println("erreur d'execution "+  e);
            }
    mais quand le script se lance, il m'indique qu'il n'arrive pas à ouvrir le fichier donnee.txt en lecture...
    Est ce du au limitation de java ? parce que quand j'ai essayer de le lancer via un script bat avec la commande start et bien cela ne marche pas non plus, parce que l'url du fichier n'est pas bonne...
    Alors s'il vous plaît si vous savez pourquoi...
    Dite le moi parce que la je desespere...

    Bonne fêtes à tous

    [edit: mon fichier est un .exe, mais c'est bien un script]

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut
    Euh...

    Pas sûr de bien comprendre ton problème, mais j'ai l'impression que ça vient de ton script plutôt que du code java appelant.

    Le script ne marche pas non plus quand tu l'appelles "en direct" si je comprends bien ?
    C'est quoi comme langage ? Tu sais balancer le code ?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    script mal écrit, qui présuppose vraisemblablement du répertoire courant au moment de son exécution. Cette question n'a rien à voir avec java

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 48
    Par défaut
    non mon script est écrit dans un language bizard appeler autoit (il fonctionne très bien en dehors de mon application, sauf que java appelle mon script, mais j'ai mis des messages d'erreurs dans mon script et celui ci m'indique que le fichier à traiter pourtant dans l'arborescence du script ne peu l'ouvrir en lecture...

    voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    ;Projet Etablissement Jeanne Antide
    ;Auteur: Antoine DUBOIS
    ;License GPL
    ;ce script peu être réutillisé en totalité ou en partie, 
    ;mais le nom de l'auteur doit figurer dans le fichier
    
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;Definition de Constante;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    $donneS = "donnee.txt"
    
    $entreeS = "donnee\entree.txt"
    $entreeSB = "donnee\entree.txt.bak"
    
    $tempLivraisonS = "donnee\tempLivraison.txt"
    $tempLivraisonSB = "donnee\tempLivraison.txt.bak"
    
    $sortieProS = "donnee\sortiePro.txt"
    $sortieProSB = "donnee\sortiePro.txt.bak"
    
    $sortieEcoleS = "donnee\sortieEcole.txt"
    $sortieEcoleSB = "donnee\sortieEcole.txt.bak"
    
    $tempFrigoS = "donnee\tempFrigo.txt"
    $tempFrigoSB = "donnee\tempFrigo.txt.bak"
    
    $tempCongeloS = "donnee\tempCongelo.txt"
    $tempCongeloSB = "donnee\tempCongelo.txt.bak"
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;Definition de Variable;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;itérateur de la boucle For
    $i = 0
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;Definition de fonction;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    ;Archivage du fichier pointé par $file dans le fichier pointé par $fileB
    ;en limitant la taille des fichiers *.bak à 500ko
    Func deleteExisting( $file , $fileB )
    	if FileExists ( $file ) Then
    		$tmpOpenFile = openFileRead ( $file )
    		;test de la taille du fichier pour évité qu'il ne dépasse les 500ko
    		if ( FileGetSize ( $fileB ) / 1024 ) >= 500 Then
    			$tmpOpenFile2 = openFileWriteO( $fileB )
    		Else
    			$tmpOpenFile2 = openFileWrite ( $fileB )
    		EndIf
    		
    		If $tmpOpenFile <> -1 AND $tmpOpenFile2 <> -1 then
    			$tmpText = FileRead ( $tmpOpenFile )
    			FileWrite ( $tmpOpenFile2 , $tmpText )		
    			FileClose ( $tmpOpenFile )
    			FileRecycle ( $file )
    			FileClose ( $fileB )
    		EndIf
    	EndIf
    EndFunc
    
    ;ouverture de fichier en mode read only et renvoie du handle du fichier si reussi
    Func openFileRead ( $file )
    	
    	$donnee=FileOpen ( $file , 0 )
    	
    	If $donnee = -1 Then
    		MsgBox( 0 , "Error", "impossible d'ouvrir le fichier '"& $file &"' en lecture")
    	EndIf
    	
    	Return $donnee
    	
    EndFunc
    
    ;ouverture de fichier en mode write  fin de fichier et renvoie du handle du fichier si reussi
    Func openFileWrite ( $file )
    	$donnee=FileOpen( $file , 1 )
    	If $donnee = -1 AND $file  Then
    		MsgBox(0, "Error", "impossible d'ouvrir le fichier '"& $file &"' en ecriture")
    	EndIf
    	Return $donnee
    EndFunc
    
    ;ouverture de fichier en mode write overwrite et renvoie du handle du fichier si reussi
    Func openFileWriteO ( $file )
    	$donnee=FileOpen( $file , 2)
    	If $donnee = -1 AND $file  Then
    		MsgBox(0, "Error", "impossible d'ouvrir le fichier '"& $file &"' en mode sur-ecriture")
    	EndIf
    	Return $donnee
    EndFunc
    
    ;Archivage des ancienne données dans la limite de 500ko
    
    deleteExisting( $entreeS, $entreeSB)
    
    deleteExisting( $tempLivraisonS, $tempLivraisonSB)
    
    deleteExisting( $sortieProS, $sortieProSB)
    
    deleteExisting( $sortieEcoleS, $sortieEcoleSB)
    
    deleteExisting( $tempFrigoS, $tempFrigoSB)
    
    deleteExisting( $tempCongeloS, $tempCongeloSB)
    
    
    	$tmpFile=openFileRead($donneS)
    	
    	For $i = 1 to 1000 Step 1
    		$ligne=FileReadLine ( $tmpFile , $i)
    		if IsString($ligne) Then
    
    			;trouver les entrées
    			;si on trouve  E_ et que la ligne ne contient pas SE_ on insere la ligne dans entree.txt
    			if (StringInStr($ligne, "E_", 2,1))<>0  Then
    				if (StringInStr($ligne, "SE_", 2,1))=0 Then
    					$entree=openFileWrite($entreeS)
    					FileWriteLine ( $entree, $ligne )
    					FileClose($entree)
    				EndIf
    			EndIf
    		
    			;trouver les temps Livraison
    			;si on trouve  TT_ on insere la ligne dans tempsLivraison.txt
    			if (StringInStr($ligne, "TL_", 2,1))<>0 Then
    				$tempLivraison = openFileWrite( $tempLivraisonS )
    				FileWriteLine ( $tempLivraison, $ligne )
    				FileClose($tempLivraison)
    			EndIf
    		
    			;trouver les Sorties pro
    			;si on trouve  SP_ on insere la ligne dans sortiePro.txt
    			if (StringInStr($ligne, "SP_", 2,1))<>0 Then
    				$sortiePro = openFileWrite( $sortieProS )			
    				FileWriteLine ( $sortiePro, $ligne )
    				Fileclose ($sortiePro)
    			EndIf
    		
    			;trouver les sorties ecole
    			;si on trouve  SE_ on insere la ligne dans sortieEcole.txt
    			if (StringInStr($ligne, "SE_", 2,1))<>0 Then
    				$sortieEcole = openFileWrite( $sortieEcoleS )			
    				FileWriteLine ( $sortieEcole, $ligne )
    				FileClose($sortieEcole)
    			EndIf
    		
    			;trouver les temps Frigo
    			;si on trouve  TF_ on insere la ligne dans tempFrigo.txt
    			if (StringInStr($ligne, "TF_", 2,1))<>0 Then
    				$tempFrigo = openFileWrite( $tempFrigoS )			
    				FileWriteLine ( $tempFrigo, $ligne )
    				FileClose($tempFrigo)
    			EndIf
    		
    			;trouver les temps Congelo
    			;si on trouve  TC_ on insere la ligne dans tempCongelo.txt
    			if (StringInStr($ligne, "TC_", 2,1))<>0 Then
    			$tempCongelo = openFileWrite($tempCongeloS)
    				FileWriteLine ( $tempCongelo, $ligne )
    				FileClose($tempCongelo)
    			EndIf
    			
    		Else
    			;si le fichier donnee est fini, on quitte la boucle
    			ExitLoop
    		EndIf
    			
    	Next
    Mais ce script marche très bien...
    [edit: la coloration est immonde désolé]

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme je l'ai dit, tu présuppose du répertoire courant au moment de l'exécution de ton script (car tu utilise des chemins relatifs pour tes fichiers), c'est là ton erreur. Java n'a rien à voir avec ça.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 48
    Par défaut
    PFFF !!!!
    bah une histoire à la $*ùù*
    ET LE PROBLEME VIENS BIEN DE JAVA ET PAS DE MON SCRIPT QUI FONCTIONNE PARFAITEMENT EN DEHORS DE JAVA
    Sauf que l'utilisation de getRuntime().exec()
    ne permet pas d'executer un fichier qui utilise des url relatives pour une raison obscure, probablement a cause du getRuntime() qui signifie qu'il fonctionne en fonction du reptoire du *.class donc j'ai du mettre des url absolu
    alors si jamais quelqu'un à une solution...
    Je l'invite à faire tournée...

    Bonne fête bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter un script shell depuis php
    Par allyass dans le forum Linux
    Réponses: 5
    Dernier message: 12/12/2009, 01h14
  2. Exécuter un script python depuis PHP
    Par Fawn_noOb_wxPython dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2008, 13h27
  3. Exécuter un script SQL depuis une procédure PL/SQL
    Par rvfranck dans le forum PL/SQL
    Réponses: 8
    Dernier message: 19/04/2008, 01h11
  4. [CGI] Exécuter un script bash depuis le web
    Par Marco33 dans le forum Langage
    Réponses: 2
    Dernier message: 08/02/2007, 22h16
  5. exécuter un script vbs depuis asp
    Par creezeer dans le forum ASP
    Réponses: 1
    Dernier message: 20/03/2006, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo