A voir également:
- Script batch lire dans un fichier
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
Utilisateur anonyme
24 nov. 2009 à 22:31
24 nov. 2009 à 22:31
Hello,
Le script suivant ne fait pas exactement ce que tu as demandé ( les choses inutiles sont supprimée, comme initialiser %Old% ), mais le résultat est normalement le même.
Effectue une copie du fichier avant de tester , par précaution.
J'ai commenté le code:
++
Le script suivant ne fait pas exactement ce que tu as demandé ( les choses inutiles sont supprimée, comme initialiser %Old% ), mais le résultat est normalement le même.
Effectue une copie du fichier avant de tester , par précaution.
J'ai commenté le code:
@ECHO OFF SET "JavaFile=%APPDATA%\Sun\Java\Deployment\deployment.properties" :: J'initialise %Javafile% en tant que chemin d'accès du fichier, :: pour améliorer la lisibilité du code. IF NOT EXIST "%JavaFile%" GOTO :EOF :: Si le fichier n'existe pas, on quitte le script. FINDSTR -IV "deployment\.proxy\.type" "%JavaFile%" >"%JavaFile%_B" 2>NUL :: je supprime cette ligne "deployment.proxy.type" du fichier et redirige le résultat dans un autre fichier. :: le fichier "%JavaFile%" est d'origine, le fichier "%JavaFile%_B" ne contient plus la ligne. REN "%JavaFile%" "%JavaFile%_C" :: Je renomme le fichier d'origine ( sorte de sauvegarde ) REN "%JavaFile%_B" "%JavaFile%" :: Je renomme le fichier modifié , il porte désormais le même nom que le fichier d'orgine. >>"%JavaFile%" ECHO/deployment.proxy.type=0 :: J'écrit cette ligne "deployment.proxy.type=0" dans le fichier modifié. START /WAIT "<Chemin?>\javaws http://192.168.0.1/launch.jnlp" :: Je lance le programme avec le commutateur /wait ( attendre la fin avant de poursuivre le code ) :: il faudra mettre le chemin d'accès .. ' <Chemin> ' du fichier javaws. DEL /Q "%JavaFile%" 2>NUL :: Je supprime le fichier modifié REN "%JavaFile%_C" "%JavaFile%" :: Je renomme le fichier d'origine en son nom d'origine, tout redevient comme si le script n'avais jamais été exécuté. EXIT :: Je quitte.
++
Utilisateur anonyme
25 nov. 2009 à 06:46
25 nov. 2009 à 06:46
Hello,
Dès que le processus nommé javaws ne sera plus actif , le script continuera.
Donc si tu fermes ledit processus via le gestionnaire des tâches, le script continuera.
Par contre, si l'application javaws plante, c'est à dire dans le sens "ne répond pas", on risque d'attendre un moment avant de voir la fin de ce script.
Tout à fait.
Tu peux rajouter ceci au début du code après "If not exist %javafile% ..." :
On vérifie si le fichier original renommé existe, si oui on quitte car cela veut dire que le précédent lancement du script n'a pas fini correctement son travail.
Cela répond à ta question?
+
- est-ce que cela va lancer la suite du programme(la restauration du fichier original %JavaFile%) si je ferme javaws via le gestionnaire de tâches?
Dès que le processus nommé javaws ne sera plus actif , le script continuera.
Donc si tu fermes ledit processus via le gestionnaire des tâches, le script continuera.
Par contre, si l'application javaws plante, c'est à dire dans le sens "ne répond pas", on risque d'attendre un moment avant de voir la fin de ce script.
- sinon , si je relance le programme après un "plantage" à cause de mon appli, ne vais-je pas perdre le fichier initial? Car alors si le script batch n'a pas restauré le fichier initial à la fin de son exécution, lors d'un nouvel appel au fichier il va dupliquer celui présent mais ce ne sera plus une copie de l'original!
Tout à fait.
Faut-il alors tester au démarrage du programme batch, l'existence d'un fichier de sauvegarde, et ne dupliquer l'original que si ce fichier n'existe pas? (ou que si ce fichier est plus vieux d'une durée déterminée?)
Tu peux rajouter ceci au début du code après "If not exist %javafile% ..." :
IF EXIST "%JavaFile%_C" GOTO :EOF
On vérifie si le fichier original renommé existe, si oui on quitte car cela veut dire que le précédent lancement du script n'a pas fini correctement son travail.
Cela répond à ta question?
+
En effet. Ceci répond parfaitement à ma question, et en génère une nouvelle :D
Est-il possible de faire en sorte que le programme .bat aille toujours jusqu'à la fin de son exécution? Afin qu'il ne quitte pas avant la restauration du fichier original, car avec le if exist en début de fichier, si le programme est arrêté avant la fin(fermeture par l'utilisateur ou coupure de courant par exemple), un utilisateur non averti ne sera jamais en mesure de restaurer le fichier initial à partir de l'ancien "%JavaFile%_C", et au lancement du programme il y aura toujours ce goto :eof, donc il aura l'impression que le programme ne pourra plus jamais s'exécuter sur cette machine :s
Qu'en pensez vous? Peut-on tester si le . bat est en cours d'exécution et n'aller en fin de fichier que dans ce cas là, et, si le .bat n'est pas en cours d'exécution et que "%JavaFile%_C" existe, c'est qu'il a été interrompu avant son terme, et donc, il faut dupliquer "%JavaFile%_C" en tant "%JavaFile%", et non l'inverse pour continuer le programme.
Merci de votre aide en tout cas.
Cordialement
Duc.
Est-il possible de faire en sorte que le programme .bat aille toujours jusqu'à la fin de son exécution? Afin qu'il ne quitte pas avant la restauration du fichier original, car avec le if exist en début de fichier, si le programme est arrêté avant la fin(fermeture par l'utilisateur ou coupure de courant par exemple), un utilisateur non averti ne sera jamais en mesure de restaurer le fichier initial à partir de l'ancien "%JavaFile%_C", et au lancement du programme il y aura toujours ce goto :eof, donc il aura l'impression que le programme ne pourra plus jamais s'exécuter sur cette machine :s
Qu'en pensez vous? Peut-on tester si le . bat est en cours d'exécution et n'aller en fin de fichier que dans ce cas là, et, si le .bat n'est pas en cours d'exécution et que "%JavaFile%_C" existe, c'est qu'il a été interrompu avant son terme, et donc, il faut dupliquer "%JavaFile%_C" en tant "%JavaFile%", et non l'inverse pour continuer le programme.
Merci de votre aide en tout cas.
Cordialement
Duc.
Utilisateur anonyme
25 nov. 2009 à 18:06
25 nov. 2009 à 18:06
Re,
Tu peux me tutoyer :)
Voici une petite solution, insère cette ligne devant la précédente
IF EXIST "%JavaFile%_C" REN "%JavaFile%_C" "%JavaFile%"
Le code revu donne sa:
Tu peux me tutoyer :)
Voici une petite solution, insère cette ligne devant la précédente
IF EXIST "%JavaFile%_C" REN "%JavaFile%_C" "%JavaFile%"
Le code revu donne sa:
@ECHO OFF SET "JavaFile=%APPDATA%\Sun\Java\Deployment\deployment.properties" IF NOT EXIST "%JavaFile%" GOTO :EOF IF EXIST "%JavaFile%_C" REN "%JavaFile%_C" "%JavaFile%" IF EXIST "%JavaFile%_C" GOTO :EOF FINDSTR -IV "deployment\.proxy\.type" "%JavaFile%" >"%JavaFile%_B" 2>NUL REN "%JavaFile%" "%JavaFile%_C" REN "%JavaFile%_B" "%JavaFile%" >>"%JavaFile%" ECHO/deployment.proxy.type=0 START /WAIT "<Chemin?>\javaws http://192.168.0.1/launch.jnlp" DEL /Q "%JavaFile%" 2>NUL REN "%JavaFile%_C" "%JavaFile%" EXIT
En effet, je n'avais pas pensé à faire ça de cette manière. C'est simple, et fonctionnel, que demander de plus! Merci.
Je n'ai plus qu'un seul problème à résoudre : le start /wait qui ne fonctionne pas très bien, mais je sais pourquoi maintenant : javaws.exe est une sorte de raccourci pour java. Donc quand javaws se fini, mon batch continu, mais en réalité mon programme vient juste de commencer. J'ai donc rajouté un pause après la ligne start. En attendant de trouver comment faire attendre comme il faut le programme l'utilisateur sera sollicité pour ... appuyer sur une touche pour continuer, pas trop dur, il devrait y arriver.
Merci pour tout
D. Onlajoy
Je n'ai plus qu'un seul problème à résoudre : le start /wait qui ne fonctionne pas très bien, mais je sais pourquoi maintenant : javaws.exe est une sorte de raccourci pour java. Donc quand javaws se fini, mon batch continu, mais en réalité mon programme vient juste de commencer. J'ai donc rajouté un pause après la ligne start. En attendant de trouver comment faire attendre comme il faut le programme l'utilisateur sera sollicité pour ... appuyer sur une touche pour continuer, pas trop dur, il devrait y arriver.
Merci pour tout
D. Onlajoy
Utilisateur anonyme
26 nov. 2009 à 18:34
26 nov. 2009 à 18:34
Re,
Et avec ce fichier? java.exe
Chez moi c'est sous Program files\Java\Jre6\Bin\Java.exe
De rien ;)
+
Et avec ce fichier? java.exe
Chez moi c'est sous Program files\Java\Jre6\Bin\Java.exe
De rien ;)
+
24 nov. 2009 à 23:36
En plus, les commentaires me permettent de comprendre bien comme il faut ce code, merci beaucoup!!
J'ai quand même une petite question : que signifie le "-IV" juste après le FINDSTR ?
Duc.
25 nov. 2009 à 00:10
J'ai trouvé seul ma réponse et j'aurai pu réfléchir un peu plus : "-IV" est équivalent à "-I -V", et l'on trouve l'explication dans la doc. Néanmoins je me suis demandé posé cette question un peu plus technique :
comment va réagir le programme si mon application lancé par javaws plante?
- est-ce que cela va lancer la suite du programme(la restauration du fichier original %JavaFile%) si je ferme javaws via le gestionnaire de tâches?
- sinon , si je relance le programme après un "plantage" à cause de mon appli, ne vais-je pas perdre le fichier initial? Car alors si le script batch n'a pas restauré le fichier initial à la fin de son exécution, lors d'un nouvel appel au fichier il va dupliquer celui présent mais ce ne sera plus une copie de l'original!
Faut-il alors tester au démarrage du programme batch, l'existence d'un fichier de sauvegarde, et ne dupliquer l'original que si ce fichier n'existe pas? (ou que si ce fichier est plus vieux d'une durée déterminée?)
merci de vos réponses, cela devient intéressant comme réflexions.
Duc.