Rechercher : dans
Par :

Perl | Commande DOS

Dernière réponse le 8 sep 2008 à 16:49:43 MrCanard, le 8 sep 2008 à 10:59:59 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « Perl | Commande DOS » dans :
Gérer les utilisateurs de XP et Vista grâce aux commandes DOS Voir Voici comment gérer les utilisateurs avec DOS dans XP et Vista. Vous allez me dire, pourquoi passer par DOS si on peut passer par gpedit.msc ? La réponse est simple: gpedit.msc n'est pas dans Vista familial et, dans XP familial, les commandes DOS...
[Windows] Connaître la configuration IP d'un PC VoirPour connaître la configuration IP d'un PC, il existe une simple commande DOS. Ouvrez une fenêtre de commandes DOS : Ouvrez le menu Démarrer Cliquez sur "Exécuter" Tapez cmd Validez (par un clic sur OK) Une fois dans cette fenêtre,...

1

dubcek, le 8 sep 2008 à 11:06:01

Hello
et avec
$rep = system("cmd /c dir");
dir étant une commande interne

Répondre à dubcek

2

MrCanard, le 8 sep 2008 à 11:25:57
  • +1

Nop toujours ce fameux et très énervant je dois avouer "Can't spawn "cmd.exe" [...]"

:(

Répondre à MrCanard

3

dubcek, le 8 sep 2008 à 11:49:47

Et avec system("C:\WINDOWS\SYSTEM32\cmd.exe /c dir");

Répondre à dubcek

4

MrCanard, le 8 sep 2008 à 11:59:14

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"

Répondre à MrCanard

5

dubcek, le 8 sep 2008 à 13:51:26

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

Répondre à dubcek

6

MrCanard, le 8 sep 2008 à 14:03:30

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

Répondre à MrCanard

7

dubcek, le 8 sep 2008 à 14:20:15

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

Répondre à dubcek

8

MrCanard, le 8 sep 2008 à 15:03:10

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

Répondre à MrCanard

9

MrCanard, le 8 sep 2008 à 16:06:28
  • +1

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 "

Répondre à MrCanard

10

dubcek, le 8 sep 2008 à 16:46:17

Args contient 2 éléments mais pas le résultat de l'exécution system

Répondre à dubcek

11

 MrCanard, le 8 sep 2008 à 16:49:43

Comment je peux faire alors pour récupérer cette valeur du "cd" ??

Répondre à MrCanard
Collection CommentÇaMarche.net