Lancer commande DOS dans un objet Process

Verrisan Messages postés 59 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 23 décembre 2013 - 31 janv. 2007 à 09:44
angenoir999 Messages postés 19 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 2 octobre 2008 - 14 févr. 2007 à 01:43
Bonjour tout le monde,

Voilà j'aimerais lancé la comande Dos "move" qui permet de déplacer un fichier d'un répertoire à un autre dans objet de type Process. Est-ce que c'est possible de faire cela avec ce genre d'objet où s'il faut utiliser un autre type d'objet?

j'ai essayé ceci, mais cela ne fonctionne pas:
....
Process proc = Process.Start(@"move C:\test\fic1.xml C:\test2\fic1.xml");
...

Par avance, merci de votre aide!

Cédric

13 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 janv. 2007 à 09:53
Salut,

Avec xcopy cela fonctionne en tout cas

<hr />ProcessStartInfo psi =
new
ProcessStartInfo(
"xcopy");
psi.Arguments =
@"d:\test.txt e:";

Process.Start(psi);
<hr />

Mx
MVP C# 
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2007 à 10:18
en même temps...

File.Move c'est pas mal non plus

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 janv. 2007 à 10:20
C'est vrai ^^
Mais il y a peut-etre une raison a ca... ?

Mx
MVP C# 
0
Verrisan Messages postés 59 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 23 décembre 2013
31 janv. 2007 à 13:49
Oui, il y a une raison,

Si j'utilise File.Move() ou File.Delete(), j'ai le message d'erreur suivant qui vient: "l'accès au chemin d'accès c:\.... est refusé".

Pourtant si j'utilise File.Copy(), je n'ai pas de problème. De plus, le fichier ou le répertoire en question n'ont pas de restriction particulière, car si j'exécuter move, Delete ou copy avec le fichier montré plus haut, je n'ai pas de problème.

C'est vrai, qu'avex xcopy, cela peut fonctionner car il existe un fichier xcopy.exe qui se trouve en général, c:\windows\system32\....

Par contre, pour "move" et "del", ce n'est pas la même chose!

Si vous avez d'autres tuyaux, dites-le moi!

En tout cas merci pour votre aide!

Cédric
0

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

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2007 à 13:58
si l'accés est refusé, c'est qu'il y a une raison...
Est-ce qu'en tapant dans l'invité de commande la commande del c:\...\fichier.ext ca fonctionne ?

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Verrisan Messages postés 59 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 23 décembre 2013
31 janv. 2007 à 15:05
Oui cela fonctionne depuis le prompt DOS, Mais pas depuis le code C# avec File.Delete().

Merci

Cédric
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2007 à 15:23
ce qui est bizarre, c'est que les commande Delete et Move du framework utilisent respectivement les APIs DeleteFile et MoveFile...

Un process doit bloquer les fichiers lorsque tu lances ton application !

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Verrisan Messages postés 59 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 23 décembre 2013
31 janv. 2007 à 16:39
Je ne sais non plus quel serait le processus qui pourrait me bloquer avec File.Delete() ou File.Move() et que avec File.Cop() cela fonctionne. C'est pour cela que je veux essayer de lancer un processus avec Process pour contourner le problème. Tu ne saurais pas comment je pourrais faire pour exécuter une commande Dos dans un Process.

Merci de ton aide!

Cédric
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
1 févr. 2007 à 11:41
Si tu tiens vraiment a passer par ton process avec sa commande dos, essaye un truc dans ce style:

Process proc = Process.Start(@"start move C:\test\fic1.xml C:\test2\fic1.xml");

en utilisant les options pour ne pas afficher la fenetre ca devrait marcher...

Nul ne devient grand par la guerre...
0
Verrisan Messages postés 59 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 23 décembre 2013
1 févr. 2007 à 15:09
Non cela ne fonctionne pas, car lorsque j'exécute ceci:

 Process proc = Process.Start(@"start move C:\test\fic1.xml C:\test2\fic1.xml");

j'ai le message suivant qui apparaît:

Le fichier spécifié est introuvable

Est-ce qu'il faut spécifier le répertoire de travail où se trouve le fichier "Start". Est-ce que cela a une influence si ceci est exécuté dans un Service Web.

Merci pour l'aide

Cédric
0
Tracid83 Messages postés 32 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 23 mai 2007
2 févr. 2007 à 14:54
Salut j'ai réussit a exécuter des commands dos avec en créant un process.Je te donne mon code mais dans mon exemple j'utilise la commande nbtstat. J'espère que cela pourra t'aider.

ProcessStartInfo infos = new ProcessStartInfo("nbtstat.exe", "-a " + IP);
infos.RedirectStandardOutput = true;
infos.UseShellExecute = false;
Process proc = new Process();
proc.StartInfo = infos;
proc.Start();

J'ai oublier de préciser que j'ai copier dans le fichier bin\debug du projet l'exécutable nbtstat.exe
Bon courage.
0
Verrisan Messages postés 59 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 23 décembre 2013
5 févr. 2007 à 15:35
Salut,

Effectivement, en lançaint un processus avec nbtstat.exe, cela fonctionne et tu n'as meêm pas forcément besoin de le copier bin\debug, si tu le chemin c:\windows\system32 dans le PATH. Comme avec xecopy.exe, nbstat.exe est un fichier exécutable, alors qu'il n'existe pas de move.exe, delete.exe ou copy.exe et lorsqu'on lance un process, il lui faut indiquer le nom du fichier à exécuter. C'est pour cela que j'ai le message "le fichier spécifié est introuvable". Si quelqu'un connaît un moyen pour lancer un processus sans lui indiquer de nom de fichier (commande DOS du styple copy ou autre) je suis prenant!!!!

Pour revenir à mon problème initial, j'ai effectué le test suivant:

File.Move(@"c:\test\fic1.xml", @"c:\test2\fic3.xml")

J'ai le message d'erreur suivant qui vient:
L'accès au chemin d'accès est refusé.

Par contre, si j'effectue les étapes suivantes:

File.Copy(@"C:\test\fic1.xml", @"C:\test\fic2.xml");
File.Move(@"C:\test\fic2.xml", @"C:\test2\fic3.xml");

CELA FONCTIONNE!

ET j'effectue ceci dans un invite de commande DOS ceci:

move c:\test\fic1.xml c:\test\fic3.xml

CELA FONCTIONNE AUSSI.

Est-ce quelqu'un saurait pourquoi, je ne peux pas effectuer en une seule fois File.Move(@"c:\test\fic1.xml", @"c:\test2\fic3.xml"), qu'est-ce qui blque???

Merci pour votre aide!

Cédric
0
angenoir999 Messages postés 19 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 2 octobre 2008 1
14 févr. 2007 à 01:43
Bonjour


 


si tu utilise IIS, c'est que tu dois rencontrer un problème de droit.

1/ vérifie que les users IWAM et IUSR ont bien les droits sur tes répertoires.

2/ Si oui, applique ceci:

http://www.aspfr.com/tutoriaux/LANCER-PROCESSUS-PARTIR-PAGE-ASP-AVEC-DROITS-ADMINS_617.aspx


angenoir999
0
Rejoignez-nous