2013-02-10 3 views
2

Я пытаюсь передать строку пути в качестве аргументов в приложение формы Windows. Я понимаю, что мне нужно добавить цитаты. В настоящее время я использую код ниже.Передача пути в качестве аргументов

DirectoryInfo info = new DirectoryInfo(path); 
string.Format("\"{0}\"", info.FullName); 

Код выше работает, когда путь как D:\My Development\GitRepositories. Однако, когда я передаю C:\, аргумент, который я получаю, равен C:", потому что последний \ символ работает как символ эвакуации.

Я что-то не так? Кроме того, есть ли лучший способ сделать это?

Заранее спасибо.

+0

Вы должны избежать экранирующего символа «\\» приведут, как «\» – Machinarius

+1

Проблемы не с кодом вы публикуемым, а в код, используя результат 'string.Format (" \ "{0} \" ", info.FullName);'. Отправьте его, и мы постараемся понять, что вы сделали неправильно. –

+0

Вы не назначаете результат форматирования строки. Вы должны делать что-то вроде этого: 'string result = string.Format (" \ "{0} \" ", info.FullName);' –

ответ

0

Ваша задача избежать в C# можно маскировать все обратные слэши со второй обратной косой черты или Погружает знак (@) перед первой цитаты:

string option1="c:\\your\\full\\path\\"; 
string [email protected]"c:\your\full\path\"; 

Во всяком случае, не в каждом случае являются кавычки в строку Обязательное , В большинстве случаев только если вам нужно запустить внешнюю программу, и это только в том случае, если вам нужно это в качестве аргумента.

1

CommandLineArg являются space разделителями, следовательно, и нужно передать команду-ARG с "

которые означают, если Path = C:\My folder\ будет отправлено как два аргумента, но если оно передается как "C:\My Folder\" это единственный аргумент.

так

string commandArg = string.Format("\"{0}\"", info.FullName) 
1

Попробуйте использовать ProcessStartInfo и класс Process и икру приложения. Это также даст вам больший контроль над тем, как он запускается, и какой-либо результат или ошибки, которые он возвращает. (Не все опции показаны в этом примере, конечно)

DirectoryInfo info = new DirectoryInfo(path); 

ProcessStartInfo processInfo = new ProcessStartInfo(); 
processInfo.FileName = [you WinForms app]; 
processInfo.Arguments = String.Format(@"""{0}""", info.FullName); 
using (Process process = Process.Start(processInfo)) 
{ 
    process.WaitForExit(); 
} 
Смежные вопросы