Perl | Commande DOS

Fermé
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
- 8 sept. 2008 à 10:59
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
- 8 sept. 2008 à 16:49
Bonjour,

Je voulais savoir comment on intégrait une commande DOS dans un script PERL, car j'ai testé ça :

#!/usr/bin/perl -w

use strict;

my $rep = "";
system $rep;
print $rep;

et même :

#!/usr/bin/perl -w

use strict;

my $rep=`dir`;
print "Repertoire courant: ".$rep."\n";

et encore :

#!/usr/bin/perl -w

use strict;

$rep = system("dir");
print "Repertoire courant: ".$rep."\n";

et il me renvoi toujours cette magnifique erreur :

Can't spawn "cmd.exe": No such file or directory at C:\Documents and Settings\[...]\new.pl

5 réponses

MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
1
8 sept. 2008 à 11:25
Nop toujours ce fameux et très énervant je dois avouer "Can't spawn "cmd.exe" [...]"

:(
2
dubcek
Messages postés
18543
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 septembre 2022
5 556
8 sept. 2008 à 11:06
hello
et avec
$rep = system("cmd /c dir");
dir étant une commande interne
0
dubcek
Messages postés
18543
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 septembre 2022
5 556
8 sept. 2008 à 13:51
et
@args = ("C:/WINDOWS/SYSTEM32/cmd.exe", " /c dir");
system(@args);
0
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
1
8 sept. 2008 à 14:03
Ca a l'air de marcher, enfin pas d'erreur mais m'affiche pas ce que dir afficherait et il m'écrit :

Le chemin d'accès spécifié est introuvable.
Une erreur s'est produite lors du traitement de : /c dir.
Repertoire courant : 2

et il me créé un répertoire .exe et un répertoire dir

oO
-1
dubcek
Messages postés
18543
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 septembre 2022
5 556
8 sept. 2008 à 14:20
et
@args = ("C:\\WINDOWS\\SYSTEM32\\cmd.exe", " /c dir");
system(@args);
0
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
1
8 sept. 2008 à 15:03
Merci il y avait juste une petite erreur :

#!/usr/bin/perl -w

use strict;

my @args = ("C:\\WINDOWS\\SYSTEM32\\cmd.exe", " /c dir ");
system(@args);

print "Repertoire courant : ".@args;

et là ca marche par contre juste une dernière question :

il m'affiche donc ce qu'un dir affiche et dans mon print, il me met comme résultat :
Repertoire courant : 2
soit @args = 2, pourquoi ???

Merci de ton aide dubcek ;)

MrCanard
-1
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
1 > MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008

8 sept. 2008 à 16:06
Et est ce que tu saurais comment faire pour ouvrir un dossier grâce à ça, je m'explique :

opendir DIR, my @args2 = ("C:\\WINDOWS\\SYSTEM32\\cmd.exe", " /c cd ");
print "Voici la liste :\n";
while ($filename = readdir(DIR)) {
if ($filename =~ m/.sch$/) {
print "\t".$filename."\n";
}
}
closedir DIR;

Faire un truc comme ça quoi, bon c'est plus dir mais cd pour pouvoir obtenir le repertoire courant, mais il me dit là :

" readdir() attempted on invalid dirhandle DIR "
0
dubcek
Messages postés
18543
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 septembre 2022
5 556 > MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008

8 sept. 2008 à 16:46
args contient 2 éléments mais pas le résultat de l'exécution system
-1
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
1 > dubcek
Messages postés
18543
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 septembre 2022

8 sept. 2008 à 16:49
Comment je peux faire alors pour récupérer cette valeur du "cd" ??
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek
Messages postés
18543
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 septembre 2022
5 556
8 sept. 2008 à 11:49
et avec system("C:\WINDOWS\SYSTEM32\cmd.exe /c dir");
-1
MrCanard
Messages postés
22
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
26 septembre 2008
1
8 sept. 2008 à 11:59
Avec :

#!/usr/bin/perl -w

use strict;

my $rep = system("C:/WINDOWS/SYSTEM32/cmd.exe /c dir");

print "Repertoire courant : ".$rep;

J'obtiens une nouvelle erreur ^^ mais qui m'a l'air moins grave :

"La syntaxe de la commande est incorrecte."

Parce que quand je mets des "\" ça me mets : "Unrecognized escape \W passed through" et pareil pour "\S"
-1