我试图从一个C#应用程序启动一个单词,作为参数传递一个带有空格的网络共享上的文件。我已经搜索过,只能查找只有本地存储空间的文件的工作示例,而不能找到网络共享。
我只是成功将网络共享映射到一个字母,例如:
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 :(得分: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属性应该以@开头,以确保完成正确的转义。