2015-11-20 2 views
0

Я пытаюсь запустить слово из приложения C#, передавая в качестве аргумента файл, находящийся в сетевом ресурсе с пробелами. Я искал и могу найти только рабочие примеры с файлами с пробелами только на локальном хранилище, а не на сетевых ресурсах.Process.Start с сетевым ресурсом AND пробелов

я имел только успех, отображающую долю сети в письме, например:

Process.Start("WINWORD.EXE", "\"k:\\coordinacion de apoyo a usuarios\\informes\\2015\\2015-10\\informe octubre 2015.docx\""); 

Но следующее не работает:

Process.Start("WINWORD.EXE", "\"\\mar-fp01\\mar_tecnologia$\\coordinacion de apoyo a usuarios\\informes\\2015\\2015-10\\informe octubre 2015.docx\""); 

(K: отображается \ Mar- FP01 \ mar_tecnologia $)

Кроме того, я не хочу, чтобы жестко закодировать расположение, так как в действительности я получить имя файла из:

SaveFileDialog archivo = new SaveFileDialog(); 
archivo.FileName = "informe "+ months.GetValue(month - 1) + " " + year; 
archivo.InitialDirectory = @"\\mar-fp01\mar_tecnologia$\Coordinacion de Apoyo a Usuarios\Informes\" + year + "\\" + year + "-" + monthYear[0].PadLeft(2, '0'); 

Так что правильное решение должно взять archivo.FileName и сделать минимальное преобразование в его ценность, чтобы гарантировать, что Process.Start будет работать. Я попытался использовать @ delimiter, также ProcessStartInfo с его свойством Arguments и никакой комбинацией, которую я пробовал. Этот вопрос должен помочь любому, кто должен возиться с файлами с пробелами в сетевых ресурсах.

+0

При работе с UNC-путями перед именем сервера должна быть двойная обратная косая черта. «' \ "\\\\ mar-fp01 \\ ...' работает лучше? –

+0

http://stackoverflow.com/questions/952721/problems-launching-a-process-with-process-start-how-do-i-construct-the-argum/952852#952852 –

+0

@Damien_The_Unbeliever да, это сработало и что помогли мне найти решение, я просто должен был добавить кавычки до и после archivo.fileName. См. Отредактированный вопрос. Благодаря! – fjleon

ответ

0

Решение:

Process.Start("WINWORD.EXE", "\""+archivo.FileName+"\""); 

Где Archivo является экземпляром SaveFileDialog следующим образом:

SaveFileDialog archivo = new SaveFileDialog(); 
archivo.Filter = "Archivos .docx (*.docx)|*.docx|Todos los archivos (*.*)|*.*"; 
archivo.FileName = "filename with spaces"; 
archivo.InitialDirectory = @"\\server\share$\folder with spaces\another folder"; 

InitialDirectory свойство должно предшествовать @ обеспечить надлежащее экранирование делается.

Смежные вопросы