Batch DOS

Batch DOS - Divers - Programmation

Marsh Posté le 02-01-2004 à 16:15:18    

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 !

Reply

Marsh Posté le 02-01-2004 à 16:15:18   

Reply

Marsh Posté le 02-01-2004 à 16:20:13    

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

Reply

Marsh Posté le 02-01-2004 à 16:20:41    

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

Reply

Marsh Posté le 02-01-2004 à 16:24:02    

*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
Reply

Marsh Posté le 02-01-2004 à 16:26:12    

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:

Reply

Marsh Posté le 02-01-2004 à 16:28:33    

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 :/

Reply

Marsh Posté le 02-01-2004 à 16:32:38    

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 ???

Reply

Marsh Posté le 02-01-2004 à 16:35:11    

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..

Reply

Marsh Posté le 02-01-2004 à 16:42:19    

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

Reply

Marsh Posté le 02-01-2004 à 16:53:49    

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 :)

Reply

Marsh Posté le 02-01-2004 à 16:53:49   

Reply

Marsh Posté le 02-01-2004 à 16:54:41    

Impossible en BATCH pur.
Essayes avec du JScript :/

Reply

Marsh Posté le 02-01-2004 à 16:56:48    

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é..

Reply

Marsh Posté le 02-01-2004 à 17:16:25    

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...  :(

Reply

Marsh Posté le 02-01-2004 à 17:17:37    

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 :/ )

Reply

Marsh Posté le 02-01-2004 à 17:17:57    

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

Reply

Marsh Posté le 02-01-2004 à 17:19:05    

Heu t'es sous quel OS là ?


Message édité par Mara's dad le 02-01-2004 à 17:19:15
Reply

Marsh Posté le 02-01-2004 à 17:29:05    

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.

Reply

Marsh Posté le 02-01-2004 à 17:30:04    

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

Reply

Marsh Posté le 02-01-2004 à 17:31:20    

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
Reply

Marsh Posté le 02-01-2004 à 17:32:15    

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 ! ;)

Reply

Marsh Posté le 02-01-2004 à 18:34:21    

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

Reply

Marsh Posté le 02-01-2004 à 18:35:30    

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 !
Reply

Marsh Posté le 02-01-2004 à 18:36:35    

Merci !

Reply

Marsh Posté le 02-01-2004 à 18:36:51    

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 !
Reply

Marsh Posté le 02-01-2004 à 22:14:18    

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 ? :??:

Reply

Marsh Posté le 02-01-2004 à 22:16:23    

Reply

Marsh Posté le 02-01-2004 à 22:20:02    

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 !

Reply

Marsh Posté le 02-01-2004 à 22:30:54    

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

Reply

Marsh Posté le 02-01-2004 à 22:39:46    

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()

Reply

Marsh Posté le 02-01-2004 à 22:45:13    

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

Reply

Marsh Posté le 02-01-2004 à 22:47:05    

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 !

Reply

Marsh Posté le 02-01-2004 à 22:51:46    

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
Reply

Marsh Posté le 02-01-2004 à 22:56:01    

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

Reply

Marsh Posté le 02-01-2004 à 23:19:08    

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
Reply

Marsh Posté le 03-01-2004 à 11:00:05    

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 ?

Reply

Marsh Posté le 03-01-2004 à 16:47:51    

ya le winbatch aussi

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed