Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2102 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Batch DOS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Batch DOS

n°600792
yeffries
Posté le 02-01-2004 à 16:15:18  profilanswer
 

Salut !
 
Bon, ce n'est pas un sujet de programmation, mais je ne savais pas trop ou placer ca... Sauriez-vous comment lire le contenu d'un fichier sous DOS et faire une action en fonction du resultat de cette lecture ?
Un truc dans ce style mais en DOS =>
$test=fopen{"coucou.txt"};
if ($test==1) {
truc1
} else {
truc2
}
 
Merci !

mood
Publicité
Posté le 02-01-2004 à 16:15:18  profilanswer
 

n°600795
Mara's dad
Yes I can !
Posté le 02-01-2004 à 16:20:13  profilanswer
 

Essaye un truc plus évolué genre CSCRIPT ou WSCRIPT.
Ca te permet de faire un batch en JScript.

n°600797
*syl*
--> []
Posté le 02-01-2004 à 16:20:41  profilanswer
 

if fileexist "coucou.txt" goto ok
goto pasok
:ok
truc1
goto end
:pasok
truc2
:end

n°600802
Mara's dad
Yes I can !
Posté le 02-01-2004 à 16:24:02  profilanswer
 

*syl*, comment tu fais pour que les : o ne se transforment pas en :o ?


Message édité par Mara's dad le 02-01-2004 à 16:24:21
n°600805
*syl*
--> []
Posté le 02-01-2004 à 16:26:12  profilanswer
 

Mara's dad a écrit :

*syl*, comment tu fais pour que les : o ne se transforment pas en :o ?

Ça fait + de 3 ans que t'es sur ce forum et tu sais pas encore comment il marche ? [:wam]  
 
Qd tu postes un message : Désactiver les smilies
Par contre si t'édites ton message tu peux pas les désactiver, joce a encore bien fait son boulot :ange:

n°600810
Mara's dad
Yes I can !
Posté le 02-01-2004 à 16:28:33  profilanswer
 

J'ai jamais utilisé cette option :sarcastic:  
Faut dire que je met des smilies partout :D
Py c'est pas dispo en réponse rapide :/

n°600817
yeffries
Posté le 02-01-2004 à 16:32:38  profilanswer
 

Merci pour cette réponse si rapide !
ca a l'air de mieux fonctionner avec exist a la place de fileexist.
Sinon, ca n'a pas l'air de lire a l'interieur du fichier car quoi qu'il y ait a l'interieur, ca ne change pas l'action... a moi que ca ne vienne de mon ordi ???

n°600819
*syl*
--> []
Posté le 02-01-2004 à 16:35:11  profilanswer
 

yeffries a écrit :

ca a l'air de mieux fonctionner avec exist a la place de fileexist.

Wé j'ai confondu avec d'autres langages :ange:  
 

yeffries a écrit :

Sinon, ca n'a pas l'air de lire a l'interieur du fichier car quoi qu'il y ait a l'interieur, ca ne change pas l'action... a moi que ca ne vienne de mon ordi ???

Ça vérifie juste que ton fichier existe comme tu l'as demandé dans ton 1er post..

n°600829
Mara's dad
Yes I can !
Posté le 02-01-2004 à 16:42:19  profilanswer
 

Pour être précis, je dirais que son premier post vérifie qu'il est possible d'OUVRIR un fichier...
Sans préciser le mode en plus :D

n°600832
yeffries
Posté le 02-01-2004 à 16:53:49  profilanswer
 

Ah pardon, je m'etais mal exprimé, je suis desolé...
En disant "en fonction du resultat", je pensais "en fonction de ce qu'il y a d'ecrit a l'interieur du fichier texte".
Et effectivement Mara's dad, mon post etait tres imprecis :)

mood
Publicité
Posté le 02-01-2004 à 16:53:49  profilanswer
 

n°600833
Mara's dad
Yes I can !
Posté le 02-01-2004 à 16:54:41  profilanswer
 

Impossible en BATCH pur.
Essayes avec du JScript :/

n°600834
*syl*
--> []
Posté le 02-01-2004 à 16:56:48  profilanswer
 

Qu'est ce que tu veux faire exactement ?
Tu risques de devoir passer à qq chose d'autre que le BATCH (cf 1er post mara's dad) parce que ce dernier est très limité..

n°600842
yeffries
Posté le 02-01-2004 à 17:16:25  profilanswer
 

en fait, j'heberge un site web sur mon ordinateur. Ce site n'est que tres peu visité, mais je souhaite neanmoins laisser de la bande passante a ses visiteurs...
J'utilise egalement emule sur cet ordinateur.
Je souhaiterais que l'upload d'emule soit a 30Ko/s par défaut, et qu'il passe a 15Ko/s lorsqu'il y a un visiteur sur mon site, ceci marche par le biais de la fonction "exec" en php qui lance le service "bandwidth controller" qui bride mon upload a 15.
Mais lorsque le site est vide, je souhaiterais que l'upload soit retablit au max en fermant le service "bandwidth controller". En faisant une lecture (grace a un cron) toutes les minutes d'un fichier rempli automatiquement en php par le visiteur du site.
Par ex : comparer l'heure de la session visiteur (mise a jour a chaque deplacement sur le site), et l'heure actuelle du serveur. S'il y a + de 5 min d'ecart, le cron/bat doit fermer le service automatiquement.
 
Je ne sais pas si je suis clair dans mes explications...  :(

n°600844
Mara's dad
Yes I can !
Posté le 02-01-2004 à 17:17:37  profilanswer
 

Exemple de lecture de fichier :
read.js

Code :
  1. var fso, f;
  2. fso = new ActiveXObject("Scripting.FileSystemObject" );
  3. if( f = fso.OpenTextFile("c:\\windows\\win.ini", 1, false) )
  4. {
  5. while( !f.AtEndOfStream )
  6. {
  7.    WScript.Echo(  f.ReadLine( ) );
  8. }
  9. f.Close( );
  10. }


A lancer dans une session DOS par :
CSCRIPT //E:jscript read.js
 
Le //E:jscript n'est théoriquement pas indispensable, mais c'est mieux avec ( surtout avec UltraEdit :/ )

n°600845
*syl*
--> []
Posté le 02-01-2004 à 17:17:57  profilanswer
 

Bah tu fais ton script en PHP et tu le mets dans le cron [:spamafote]

n°600846
Mara's dad
Yes I can !
Posté le 02-01-2004 à 17:19:05  profilanswer
 

Heu t'es sous quel OS là ?


Message édité par Mara's dad le 02-01-2004 à 17:19:15
n°600852
yeffries
Posté le 02-01-2004 à 17:29:05  profilanswer
 

Merci Mara's dad, je vais essayer de regarder dans ce sens.
Sinon, je suis sous WinXP pro.
Pour mettre le script en php, j'y ai pensé, mais ca voudra dire ouverture d'une page a l'ecran toutes les minutes, a moins que je ne me trompe... car c'est un cron qui tourne en tache de fond sur mon ordi. c'etait plus simple de cacher la fenetre en le faisant par le dos.

n°600853
*syl*
--> []
Posté le 02-01-2004 à 17:30:04  profilanswer
 

Tu peux utiliser php.exe directement donc pas d'ouverture de browser

n°600855
Mara's dad
Yes I can !
Posté le 02-01-2004 à 17:31:20  profilanswer
 

Heu de ce point de vue, c'est pareil PHP et CSCRIPT...
Ligne de commande :
PHP toto.php
CSCRIPT toto.js
 [:grilled]


Message édité par Mara's dad le 02-01-2004 à 17:31:48
n°600857
yeffries
Posté le 02-01-2004 à 17:32:15  profilanswer
 

Je ne savais pas, desolé... Je vais donc plutot essayer de faire comme ca.  
Encore merci beaucoup a vous deux d'avoir eu autant de patience ! ;)

n°600881
yeffries
Posté le 02-01-2004 à 18:34:21  profilanswer
 

Savez-vous comment utiliser php.exe sans passer par un browser ?  :??:

n°600882
kadreg
profil: Utilisateur
Posté le 02-01-2004 à 18:35:30  profilanswer
 

yeffries a écrit :

Savez-vous comment utiliser php.exe sans passer par un browser ?  :??:  


 

kadreg@rincevent:~$ php --help
Usage: php [options] [-f] <file> [--] [args...]
       php [options] -r <code> [--] [args...]
       php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
       php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
       php [options] -- [args...]
 
  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.
 
  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin
 
kadreg@rincevent:~$


 
oui :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°600883
yeffries
Posté le 02-01-2004 à 18:36:35  profilanswer
 

Merci !

n°600884
kadreg
profil: Utilisateur
Posté le 02-01-2004 à 18:36:51  profilanswer
 

kadreg@rincevent:~$ php -a
Interactive mode enabled
 
<?php
print "hello";
Segmentation fault
kadreg@rincevent:~$


 
Ah merde :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°601040
yeffries
Posté le 02-01-2004 à 22:14:18  profilanswer
 

Bon, alors tout fonctionne par scripts php, le seul probleme qui me reste est que lorsque je lance le logiciel par le script php avec la commande "exec", le logiciel se lance bien mais php attend un resultat et se fige... Comment faire en sorte que le logiciel se lance et tourne sans s'arreter, tandis que php n'attendrait pas de resultat de sa part ? :??:

n°601042
*syl*
--&gt; []
Posté le 02-01-2004 à 22:16:23  profilanswer
 
n°601045
yeffries
Posté le 02-01-2004 à 22:20:02  profilanswer
 

Merci, mais malheureusement je ne vois pas trop comment je peux faire ceci: "vous devez vous assurez que le résultat de ce programme est redirigé vers un fichier ou une autre méthode d'archivage, car sinon, PHP va attendre la fin de l'exécution du programme", car le logiciel en question ne renvoie aucun resultat... Comment faire ? Si quelqu'un a une idée ? merci !

n°601047
*syl*
--&gt; []
Posté le 02-01-2004 à 22:30:54  profilanswer
 

C'est vrai que c'est mal expliqué mais essaie ça pour voir :
exec("start tonprog" );

n°601050
yeffries
Posté le 02-01-2004 à 22:39:46  profilanswer
 

si je mets les guillemets, php se fige, si je les enleve et que je mets "exec(start(tonprog));"  
ca m'ecrit => Call to undefined function: start()

n°601058
yeffries
Posté le 02-01-2004 à 22:45:13  profilanswer
 

Je suis bete, ca ne peut pas marcher sans guillemets de toute facon...  :(

n°601060
*syl*
--&gt; []
Posté le 02-01-2004 à 22:47:05  profilanswer
 

yeffries a écrit :

si je mets les guillemets, php se fige

Il se fige !? Normalement start rend la main, quel OS ?
 
 

yeffries a écrit :

, si je les enleve et que je mets "exec(start(tonprog));"  
ca m'ecrit => Call to undefined function: start()

Forcément c'est n'importe quoi c'que t'as écris !

n°601062
yeffries
Posté le 02-01-2004 à 22:51:46  profilanswer
 

Oui, je débute ;)  
 
Pour l'OS, c'est Windows XP pro. Le programme se lance bien mais la page se fige et je suis obligé de relancer une session de mon browser pour que ca remarche...


Message édité par yeffries le 02-01-2004 à 22:52:06
n°601063
*syl*
--&gt; []
Posté le 02-01-2004 à 22:56:01  profilanswer
 

Code :
  1. function execInBackground($path, $exe, $args = "" ) {
  2.    global $conf;
  3.  
  4.    if (file_exists($path . $exe)) {
  5.        chdir($path);
  6.        if (substr(php_uname(), 0, 7) == "Windows" ){
  7.            pclose(popen("start \"bla\" \"" . $exe . "\" " . escapeshellarg($args), "r" ));   
  8.        } else {
  9.            exec("./" . $exe . " " . escapeshellarg($args) . " > /dev/null &" );   
  10.        }
  11.    }
  12. }


http://php.us.themoes.org/manual/en/function.exec.php

n°601069
yeffries
Posté le 02-01-2004 à 23:19:08  profilanswer
 

Si je comprends bien, je fais appel a cette fonction en faisant ceci :
execInBackground("c : / rep_du_logiciel/", "logiciel.exe", "" );
Mais ca n'a pas l'air de marcher... Et surtout, a quoi correspond ce "bla" dans le code ci-dessus ? dois-je le remplacer ?
 
Les espaces dans le chemin du logiciel sont la a cause des smileys que je ne peux plus retirer  :)
2eme edit : et puis je vais me coucher, en esperant ne pas t'avoir trop embeté, Syl, merci beaucoup !!!!!!!!  :)


Message édité par yeffries le 02-01-2004 à 23:22:32
n°601275
yeffries
Posté le 03-01-2004 à 11:00:05  profilanswer
 

Code :
  1. function execInBackground($path, $exe, $args = "" ) {
  2.   global $conf;
  3.  
  4.   if (file_exists($path . $exe)) {
  5.       chdir($path);
  6.       if (substr(php_uname(), 0, 7) == "Windows" ){
  7.           pclose(popen("start \"bla\" \"" . $exe . "\" " . escapeshellarg($args), "r" ));   
  8.       } else {
  9.           exec("./" . $exe . " " . escapeshellarg($args) . " > /dev/null &" );   
  10.       }
  11.   }
  12. }


 
A quoi correspond la variable $conf a la deuxieme ligne ?

n°601450
burgergold
5$? va chez l'diable!
Posté le 03-01-2004 à 16:47:51  profilanswer
 

ya le winbatch aussi

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Batch DOS

 

Sujets relatifs
batch sous DOS[Batch DOS] Générer une séquence de nombre pour une boucle...
[Batch] Dos Scruter, Copier, Renomer, transferermenu Batch DOS
[Batch] Fenetre DOS qui se ferme !fichier date en batch DOS
BATCH DOS Besoin d'aide : Erreur bizar !!!Dans une batch DOS, comment fonctionne les variables???
[DOS] besoin d'aide sur la signification d'une ligne d'un batch.[Batch DOS - demande de service] Un script qui renomme...
Plus de sujets relatifs à : Batch DOS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR