C# + commande DOS + nom avec espace [Résolu]

Messages postés
4
Date d'inscription
dimanche 4 janvier 2004
Dernière intervention
9 février 2007
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 10 févr. 2007 à 00:29
    Bonjour à tous,

J'ai un petit problème qui est en train de me bouffer mon temps.
Je dois lancer a partir d'une appli .net une executable stockée dans un dossier avec nom a rallonge.
Je vous présente mon code afin de mieux comprendre la bete:

 string halfpath = Application.StartupPath.Normalize(); //je recupere le chemin de mon appli
A ce moment là, mon chemin est de la forme :
"C:\\Documents and Settings\\KpTn\\Bureau\\monappli\\appli\\bin\\Debug"
Je cherche ensuite a mettre des guillements autour des noms avec espaces :
            string[] tmp1=halfpath.Split('\\');
            string result = "";
            for (int i = 0; i < tmp1.Length; i++)
            {
                if(tmp1[i].ToString().Contains(" "))
                    result = result + """ + tmp1[i].ToString() + """ + @"";// si nom long je rajoute les guillements autour
                else
                    result = result + tmp1[i].ToString() + @""; // sinon je laisse comme c'etait
            }

            string path =  result + "Resources" + @"" + "ffmpeg.exe" + " -i C:" + @"" + "test.avi C:" + @"" + "result.flv";
On obtient:

"C:\\"Documents and
Settings"\\KpTn\\Bureau\\monappli\\appli\\bin\\Debug\\Resources\\ffmpeg.exe
-i C:\\test.avi C:\\result.flv"
            System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(path);
            psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            try
            {
                System.Diagnostics.Process.Start(psi); // je lance ma commande
            }
            catch (Exception exc)
            { }

Et bien sur ca ne marche pas il me dit qu'il ne trouve pas le fichier alors que si je tape la commande a la main dans une fenetre DOS, en enlevant bien sur les / en trop, ca tourne impecc...

J'espere que quelqu'un pourra me donner quelques indications et pourra par la meme occaz me donner des astuces quant à la maniere dont je traite ce cas!!

Merci

tibo
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
65
3
Merci
Hello,

Tu te complique la tâche. il n'y a pas besoin de mettre des guillemets, le psi se charge de ça.
Par contre, pour ajouter des arguments à ta commande, il faut les passer dans psi.Arguments.

En gros :

string halfpath = Application.StartupPath.Normalize(); 
string path =  halfpath + @"Resources\ffmpeg.exe"
On obtient:
"C:\Documents and Settings\KpTn\Bureau\monappli\appli\bin\Debug\Resources\ffmpeg.exe"
            System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(path);
            psi.Arguments = @"-i C:\test.avi C:\result.flv";
            psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            try
            {
                System.Diagnostics.Process.Start(psi); // je lance ma commande
            }
            catch (Exception exc)
            { }

Et voilà le travail.

Amicalement, SharpMao

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 90 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SharpMao
Messages postés
4
Date d'inscription
dimanche 4 janvier 2004
Dernière intervention
9 février 2007
0
Merci
SharpMao, si tu passes sur Lyon, hésite pas a me contacter pour que je te paye un coup à boire!!!!
Merci encore pour ta rapidité.
A bientot pour d'autres questions...

tibo
Commenter la réponse de cs_tibo007
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
Salut,

J'en profite pour plaider un coup en la faveur de mon amie Path.Combine :
string path =  halfpath + @"Resources\ffmpeg.exe"
> string path   Path.Combine(halfpath, @"Resources\ffmpeg.exe");

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.