Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/11/2011, 17h24   #1
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2006
Messages : 128
Points : 16
Points : 16
Par défaut commandes exec() & system() : lancement d'un script externe

Bonsoir à tous,

j'essaye de lancer un script vbs externe (sur mon serveur web, à la racine). Mon script se lance bien :
- sans arguments
- avec des arguments (sans espaces)

Mais dés que je veux rajouter une variable (mon argument) contenant un ou plusieurs espaces l'exécution ne se fait pas

Code :
1
2
3
$vbs_query = """ . "	cscript.exe .\working_dir.vbs" ."""." " .  """ . $sshortcutname . """ . " " . """ . $nametimestamp . """ ;
 
		echo ",".$vbs_query."," ;

Résultat :
Citation:
"cscript.exe .\working_dir.vbs" "test2122.cmd - Shortcut" "coucou | 2011-11-03 16:09:13"
quand je fais un exec($vbs_query) ça ne me récupère pas bien mes arguments..

j'ai aussi essayé la commande system() :

Code :
system("cscript.exe .\working_dir.vbs", $sshortcutname, """.$nametimestamp.""") ;
Jdois avoir un problème (et on en a tous) avec ces guillemets/simples quotes de *biiiiiiiiiiiiip* .... Mais j'ai perdu trop de cheveux aujourd'hui , d'où ma venue sur le forum

Merci pour votre aide
olivier1209 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 17h39   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 161
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 161
Points : 8 535
Points : 8 535
utilise sprintf et escapeshellarg, pour faire une chaine propre, ensuite sache que si t'essaye de lancer une commande via le serveur web c'est très limité
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 18h50   #3
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2006
Messages : 128
Points : 16
Points : 16
J'ai besoin malheureusement de cette chaine car le shortcut (.lnk) que je souhaite modifier dans le vbs porte ce nom (aussi moche soit-il )
du coup je dois garder les tirets et autres espaces
olivier1209 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 19h04   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 161
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 161
Points : 8 535
Points : 8 535
Citation:
Envoyé par olivier1209 Voir le message
J'ai besoin malheureusement de cette chaine car le shortcut (.lnk) que je souhaite modifier dans le vbs porte ce nom (aussi moche soit-il )
du coup je dois garder les tirets et autres espaces
?
ça n’empêche en rien l'utilisation de ces fonctions
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 19h55   #5
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2006
Messages : 128
Points : 16
Points : 16
ben si je change le paramêtre envoyé le résultat obtenu en sorti est erroné , faux ?
ou alors cette fonction formate en entrée et remet en forme initiale en sortie..


dans mon VBS en gros pour vérifier mes arguments j'ai un :
Code :
WScript.echo (Arg(0) & Arg(1))
olivier1209 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 20h20   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 161
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 161
Points : 8 535
Points : 8 535
les fonctions servent uniquement a formater ta chaine, montre comment tu les as utilisé
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 21h25   #7
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2006
Messages : 128
Points : 16
Points : 16
un truc de ce genre ?
Code :
system('cscript.exe' . escapeshellarg("\working_dir.vbs " . $sshortcutname . "&#34".$nametimestamp."&#34")) ;
olivier1209 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 21h27   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 161
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 161
Points : 8 535
Points : 8 535
Citation:
Envoyé par olivier1209 Voir le message
un truc de ce genre ?
Code :
system('cscript.exe' . escapeshellarg("\working_dir.vbs " . $sshortcutname . """.$nametimestamp.""")) ;
mais non, regarde bien la doc de sprintf ...
et met ta commande dans un variable plutôt, vérifie la avant de lancer system
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 10h50   #9
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2006
Messages : 128
Points : 16
Points : 16
C'est bon merci
Code :
1
2
3
4
$query = 'cscript.exe .\working_dir.vbs ';
$sshortcutname_escape = escapeshellarg($sshortcutname) ;
$nametimestamp_escape = escapeshellarg($nametimestamp) ;
system($query . $sshortcutname_escape . " ". $nametimestamp_escape) ;
olivier1209 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h14.


 
 
 
 
Partenaires

Hébergement Web