Problème avec les espaces dans le chemin - de ligne de commande d'exécution en C#
Je fais construire une interface graphique pour une ligne de commande du programme.
Dans txtBoxUrls[zone de texte] les chemins de fichiers sont entrés ligne par ligne.
Si le chemin d'accès au fichier contient espaces le programme ne fonctionne pas correctement.
Le programme est donné ci-dessous.
string[] urls = txtBoxUrls.Text.ToString().Split(new char[] { '\n', '\r' });
string s1;
string text;
foreach (string s in urls)
{
if (s.Contains(" "))
{
s1 = @"""" + s + @"""";
text += s1 + " ";
}
else
{
text += s + " ";
}
}
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = @"wk.exe";
proc.StartInfo.Arguments = text + " " + txtFileName.Text;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
//Get program output
string strOutput = proc.StandardOutput.ReadToEnd();
//Wait for process to finish
proc.WaitForExit();
Par exemple, si le chemin d'accès au fichier entré dans txtBoxUrls est "C:\VS2008\Projects\web2pdf\web2pdf\bin\Release\Test Page.htm", Le programme ne fonctionnera pas. Ce chemin d'accès au fichier avec des guillemets doubles de travail dans la ligne de commande de windows(je ne suis pas à l'aide de l'interface graphique) bien.
Quelle serait la solution.
Pourquoi êtes-vous en ajoutant txtBoxUrls.Le texte de cette ligne: proc.StartInfo.Arguments = texte + "" + txtBoxUrls.Texte + "" + txtFileName.Texte;
corrigés.
corrigés.
OriginalL'auteur Vinod | 2010-11-15
Vous devez vous connecter pour publier un commentaire.
Dans cette ligne,
text
contient déjà la cité de la version de votre txtBoxUrls cordes. Pourquoi ajoutez-vous à nouveau dans les sociétés non cotées forme (+ txtBoxUrls.Text
)? Si j'ai bien compris votre code actuellement, la suivante devrait fonctionner:En fait, depuis
txtFileName.Text
pourrait probablement contenir des espaces, vous devez le citer en tant que bien, juste pour être sûr:(ou, à l'aide de votre syntaxe:)
C'est étrange, étant donné que les deux devraient être équivalents. De toute façon, merci pour les commentaires!
OriginalL'auteur Heinzi
Généralement de contourner les espaces dans les noms de fichiers, vous aurez besoin d'envelopper votre argument de guillemets doubles. Si vous laissez de côté le devis le programme pensez qu'il a deux arguments. Quelque chose comme ceci...
Aussi, cette ligne semble avoir trop de citations. Quatre, au lieu de trois:
Vous pouvez exclure que, dans la présente instance, puis. Juste quelque chose à considérer lorsque l'on travaille avec la ligne de commande.
Cela a réglé mon problème! Merci mec
OriginalL'auteur jocull
Prendre un coup d'oeil à la classe Path - http://msdn.microsoft.com/en-us/library/system.io.path.aspx
Chemin.moissonneuse-batteuse peut être ce que vous cherchez.
OriginalL'auteur GPG