Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] Prob. commande externe (batbox) pour soucis d'esthetisme
Auteur Message
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Bonsoir à tous,
J'aimerai savoir comment je pourrai faire pour que la commande externe "Batbox.exe" ne soie pas dans le même dossier que mon batch
mais que je puisse quand même l'utilisé bien sure.
Pour vous mettre dans la situation, j'ai un batch avec un menu cliquable et je suis obligé de laisser batbox.exe dans le même dossier sinon le programme ne marche pas.
J'attends vos réponses avec impatience Wink .




Cordialement un batcheur en détresse De l'aide



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Salut Mr. Green


Est-ce que tu savais que l'on peut tout mettre dans une variable ?
C'est-à-dire que la variable peut contenir une commande Okay

Exemple :
Code:
@echo off

set e=echo
%e% YO

pause>nul



Et bien on peut faire ça avec tout même avec batbox en définissant dans une variable son chemin d'accès :

Code:
@echo off

set batbox="%~dp0/unsousdossier/batbox.exe"


%batbox% /g 5 5 /d "HELLO WORLD" /g 0 0

pause>nul





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Flammrock a écrit:
Salut Mr. Green


Est-ce que tu savais que l'on peut tout mettre dans une variable ?
C'est-à-dire que la variable peut contenir une commande Okay

Exemple :
Code:
@echo off

set e=echo
%e% YO

pause>nul



Et bien on peut faire ça avec tout même avec batbox en définissant dans une variable son chemin d'accès :

Code:
@echo off

set batbox="%~dp0/unsousdossier/batbox.exe"


%batbox% /g 5 5 /d "HELLO WORLD" /g 0 0

pause>nul


Technique déconseillé car pas performante du tout (voir ici : http://batch.xoo.it/t5186-Bien-optimiser-un-batch.htm)



Dernière édition par Xenoxis le Mar 18 Avr 2017 - 09:28; édité 1 fois

______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Comme l'a dit Xenoxis, c'est pas conseillé ni performant.

Je propose deux solutions :

soit tu veux vraiment utiliser batbox (que je déconseille, voir ici pourquoi) :
Code:
set PATH=%PATH%;%cd%;
Ou
soit tu utilise une commande qui utilise le principe de serveur comme : L'avantage de darkbox par rapport à superbox est que darkbox supporte l'entrée console (avec le mode -i) contrairement à superbox.

Mais bon, ça dépend de quel type de projet tu fais, darkbox est dédié spécifiquement pour les jeux et applications consoles hautes performance ou complexes, et batbox pour les mini programmes dédiés à Windows seulement comme darkbox est axé sur la performance et la portabilité alors que batbox est plus sur la compacité au détriment de la performance et la portabilité.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Citation:

Technique déconseillé car pas performante du tout voir ici : http://batch.xoo.it/t5186-Bien-optimiser-un-batch.htm


Mort de Rire Mort de Rire Mort de Rire Mort de Rire

n'importe quoi !!!!!!!!!!!!!


C'est au contraire plus performant dans la majorité des cas.


je vous laisse juger par vous-même :

Code:
@echo off
echo %time%
set "toto=echo toto"
for /l %%a in (1 1 1000) do %toto% >nul
echo %time%
pause
echo %time%
for /l %%a in (1 1 1000) do echo toto >nul
echo %time%


entre 6 et 8 centième pour le test avec variable
pour plus de 20 centième sans variable.


C'est une technique que je conseil et approuve (même si je l'utilise presque jamais....) surtout si vous vous lancer dans la programmation WEB où les accès au DOM sont lent.

Il est toujour plus simple de stocker une valeur (d'un array par exemple) dans une variable plûtot que d'appeler l'array chaque fois pour la même valeur.
la même chos pour une valeur stocker dans une page dinamique.

Maintenant spécifiquement pour un exe dans un Bat c'est possible que ça ne soît pas plus rapide mais ça ne sera pas plus lent non plus (ou de manière vraiment insignicative).

Donc tu peux tranquillement utiliser cette méthode sans avoir peur de ralentir ton programme ça aura 0 influence.

Même si tu utilises Darkbox ou autre.




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Xenoxis a écrit:
Technique déconseillé car pas performante du tout (voir ici : http://batch.xoo.it/t5186-Bien-optimiser-un-batch.htm


TSnake41 a écrit:
Comme l'a dit Xenoxis, c'est pas conseillé ni performant.



Vous critiquez mais ça reste de loin la meilleure solution... Laughing
Pour vous que signifie le mot "performant", vous dîtes que ce n'est pas "performant" du tout (0 de performance) or là on parle en millisecondes xDDD
Donc si un bout de script à 1ms de retard ce n'est pas performant ? Encore si c'était en minutes je comprendrai Mr. Green



Sinon Xenoxis dans ton poste celui-là : http://batch.xoo.it/t5186-Bien-optimiser-un-batch.htm
Je cite :
Xenoxis a écrit:
cmd.exe va devoir, déjà d'une part, allouer une variable dans la mémoire (oui c'est un inconvénient car si vous programmer comme ceci et que vous utiliser beaucoup de commandes externes, vous multipliez par 2 l’amplitude de l'inconvénient) et, d'autre part, cmd va devoir aller chercher dans la mémoire la variable %bb% pour ensuite exécuter la variable et ses arguments, ce qui implique beaucoup plus de travail pour cmd comparé à simplement marquer batbox.exe /arguments


A lire comme ça, on pourrai ce demander à quoi bon déclarer des variables xD
Je pense pas que tu sois fan du JavaScript dans ce cas car il n'y a que ça Okay
Une variable permet de dynamiser et d'optimiser le programme. (Certes dans ton exemple c'est inutile et il y a des pertes de performances de 1 centièmes de millisecondes, ce qui veut dire que ce n'est pas performant du TOUT OMG, c'est inacceptable xDD)

Imaginons 2sec que le chemin d'accès de batbox soit enterrer dans des centaines de sous-dossiers, là tu es entrain de dire que tu serai près à remettre l'accès complet à chaque fois au lieu de le mettre dans une toute petite variable. (Je rappelle que le client est roi, donc pas de "Oui ba met le à la racine" Mr. Green )
Imaginons aussi tant qu'on y est que ce programme est un programme de 100 000 lignes (oui soyons fous), imagine simplement la taille du fichier l'impact serai énorme Laughing Mr. Green

A ton avis, vaut mieux perdre quelques secondes ou 1h de download ? (Je rappelle que l'on est dans le fictif xD)
Et là tu va me dire oui mais les programmes en batch font en général moins de 100 lignes, donc dans la plus part des cas on parle d'une nanoseconde (oui j'exagère xD)

Tu viens pour critiquer en disant "oui c'est la pire technique ne faîtes pas ça j'en parle ici et c'est passé au info en 2013 sur france 4 alors ne faîtes pas ça merci."
Mais tu ne mentionne aucunes solutions, donc ça sert à quoi de venir ici pour critiquer l'unique technique qui existe Laughing Mr. Green



Perso, Tsnake j'ai pas compris ton astuce.



sachadee a écrit:
Citation:

Technique déconseillé car pas performante du tout voir ici : http://batch.xoo.it/t5186-Bien-optimiser-un-batch.htm


Mort de Rire Mort de Rire Mort de Rire Mort de Rire

n'importe quoi !!!!!!!!!!!!!


C'est au contraire plus performant dans la majorité des cas.


je vous laisse juger par vous-même :

Code:
@echo off
echo %time%
set "toto=echo toto"
for /l %%a in (1 1 1000) do %toto% >nul
echo %time%
pause
echo %time%
for /l %%a in (1 1 1000) do echo toto >nul
echo %time%


entre 6 et 8 centième pour le test avec variable
pour plus de 20 centième sans variable.


C'est une technique que je conseil et approuve (même si je l'utilise presque jamais....) surtout si vous vous lancer dans la programmation WEB où les accès au DOM sont lent.

Il est toujour plus simple de stocker une valeur (d'un array par exemple) dans une variable plûtot que d'appeler l'array chaque fois pour la même valeur.
la même chos pour une valeur stocker dans une page dinamique.

Maintenant spécifiquement pour un exe dans un Bat c'est possible que ça ne soît pas plus rapide mais ça ne sera pas plus lent non plus (ou de manière vraiment insignicative).

Donc tu peux tranquillement utiliser cette méthode sans avoir peur de ralentir ton programme ça aura 0 influence.

Même si tu utilises Darkbox ou autre.



Comme le dis si bien sachadee, le programme "aura 0 influence".
Et même si le script avait 20 millionièmes de retard, je ne pense pas que ça puisse changer le cour du destin quoique 5 nanosecondes....mouai non ça devrait aller xD
De plus j'ai fais plusieurs test avec le code proposé par sachadee et franchement c'est équivalent, j'ai testé avec 300 000 tours et c'est comme pile ou face,
1 fois sur 2 c'est lui qui l'emporte de 2 millisecondes le coup d'après c'est l'autre avec 1.2354 millisecondes.




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
sachadee a écrit:

Mort de Rire Mort de Rire Mort de Rire Mort de Rire

n'importe quoi !!!!!!!!!!!!!


C'est au contraire plus performant dans la majorité des cas.


je vous laisse juger par vous-même :

Code:
@echo off
echo %time%
set "toto=echo toto"
for /l %%a in (1 1 1000) do %toto% >nul
echo %time%
pause
echo %time%
for /l %%a in (1 1 1000) do echo toto >nul
echo %time%


entre 6 et 8 centième pour le test avec variable
pour plus de 20 centième sans variable.


C'est une technique que je conseil et approuve (même si je l'utilise presque jamais....) surtout si vous vous lancer dans la programmation WEB où les accès au DOM sont lent.

Il est toujour plus simple de stocker une valeur (d'un array par exemple) dans une variable plûtot que d'appeler l'array chaque fois pour la même valeur.
la même chos pour une valeur stocker dans une page dinamique.

Maintenant spécifiquement pour un exe dans un Bat c'est possible que ça ne soît pas plus rapide mais ça ne sera pas plus lent non plus (ou de manière vraiment insignicative).

Donc tu peux tranquillement utiliser cette méthode sans avoir peur de ralentir ton programme ça aura 0 influence.

Même si tu utilises Darkbox ou autre.



C'est donc pour cela que j'obtiens ce résultat :


Soit 100 ms pour la technique avec variable, et 80 ms pour la version sans variable.

Comme je l'ai expliqué dans mon post, cmd doit faire du travail en plus si on travail avec variable, sachant qu'en plus, les variables d'environnements reposent sur plusieurs couches du système Windows, cela impact très négativement à grand usage les performances.

Pour créé un batch performant, il faut utiliser le moins possibles les variables, et les réutiliser si possible (ne pas déclarer trop de variables).

@Flammrock :
Le truc c'est que le résultat de la baisse de performance se ressent si la commande est répéter, je peux te le garantir, j'ai bossé sur Httpbat et RpgDventure.
Le problème est que, si tu part dans l'optique que "1 ms c'est rien, on s'en fout", tu va accumuler des latences sur tes jeux/logiciels, or 1ms + 1 ms + ... = beaucoup d'ms, au final on gagne pas mal si les commandes sont répétés et optimisés.


Comme on le dit avec Ts, cette technique n'est pas conseillé et est une mauvaise habitude à ne pas prendre !




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 


Chez moi c'est le contraire !

M'enfin c'est pas le but du sujet.

Dans le cas de notre ami c'est une bonne solution d'utiliser une variable.

Après c'est plus une question de bon sens, mais de dire c'est pas une bonne pratique en 2017 où l'on a des RAM de 4Gb et des processeurs qui en X Ghz, je crois que ça n'a pas vraiment de fondement. Ensuite comme le souligne flammrock dans le cas d'un grand code ça peu énormément réduire la taille du source ce qui aura un impact énorme sur la vitesse d'éxecution.

Las variables d'environnements c'est quoi ? des raccourcis de la même manière. Et il me semble que tu les utilises dans tes codes @Xenoxis.

Et comme tu le vois le même code chez toi à un résultat inverse au miens.

Donc je vais le répeter :

"tu peux tranquillement utiliser cette méthode sans avoir peur de ralentir ton programme ça aura 0 influence !"


Okay



Dernière édition par sachadee le Mar 18 Avr 2017 - 11:50; édité 1 fois

______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
L'utilisation d'une variable pour les exécutable est une mauvaise habitude, en réalité, elle ralenti légèrement mais surtout, est encore moins flexible que ça :
Code:
@Echo off
:: Ligne magique
set PATH=%PATH%;%CD%;
batbox /c 0x1D /d "Marche ici"
echo.
cd ..
batbox /c 0x4D /d "Ici aussi"
pause
goto :eof
PATH est la variable qui permet d'ajouter un chemin pour chercher les exécutables quand on les appelles.

Pour le soucis d'utiliser les variables pour batbox, tu va combiner la faiblesse de cmd avec la faiblesse de batbox.
Donc, une grosse perte de performance non négligeable (voir benchmarks darkbox + Xenoxis).

D'ailleurs, il n'est plus faux de dire que batbox est dépassé, Darkbatcher ne travaille (et ne travaillera) plus dessus (depuis 2 ans), son dernier projet de commande externe console est Superbox, actuellement inactif...




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Effectivement, PATH et également une solution, mais c'est également une variable.

Et si on suît votre raisonnement : ça peu avoir un impact négatif sur l'ensemble du sytème et non seulement
sur l'éxecution du bat en question vu que l'on va augmenter ça taille, donc son temps de traitement, etc...

Ça ne va pas seulement ralentir le BAT mais tous les programmes installées sur la machine et qui l'utilise.

Quel est la meilleur solution ?

La variable de Flammrock ?

ou

La variable de TS ?

Je vous laisse seul juge.

Mort de Rire




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 
Un grand merci a tous pour vos réponses,
Je ne m'attendais pas à déclencher un si grand débat à se sujet.
Mon batch fonctionne parfaitement grâce à la variable de Flammrock.
Encore merci et à la prochaine sur le forum Okay Merci !



Message [R] Prob. commande externe (batbox) pour soucis d'esthetisme 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch