尝试使用Process.Start()以.txt文件作为参数打开.exe文件

时间:2013-10-15 07:16:06

标签: vb.net process.start

我有一个.exe文件,它接受一个.txt文件作为参数。但是,我无法使用vb.net中的以下代码。当我使用带有文本文件的cmd运行.exe时,它可以正常工作。

Dim a As New ProcessStartInfo
a.FileName = "C:\Users\Asim Rahman\Desktop\Project Input Files\DirectStiffness.exe"
a.Arguments = "C:\Users\Asim Rahman\Desktop\Project Input Files\HW3A.txt"
a.WindowStyle = ProcessWindowStyle.Maximized
Process.Start(a)

我还尝试过许多其他方式打开程序和文件,但我没能使它工作。任何帮助将不胜感激。 谢谢!

2 个答案:

答案 0 :(得分:3)

我认为你的exe文件通过输入参数找到你的文本文件 但是文本文件的完整路径包含空格,这会将args参数分解为多个元素 您的程序引用的第一个参数是不完整的路径。

args[0] = "C:\users\asim" 
.....
对于txt文件的路径名中存在的每个空格都是

等等。

一个简单的解决方案是指定WorkingDirectory并从参数

中删除完整路径
Dim a As New ProcessStartInfo
a.WorkingDirectory = "C:\Users\Asim Rahman\Desktop\Project Input Files"
a.FileName = "DirectStiffness.exe"
a.Arguments = "HW3A.txt"
a.WindowStyle = ProcessWindowStyle.Maximized
Process.Start(a)

答案 1 :(得分:1)

问题可能是您需要引用作为参数传递的文件名,因为它包含空格。如果不将其用双引号括起来,您的应用程序将单独获得以下参数:

  

C:\用户\阿西
  拉赫曼\桌面\项目
  输入
  Files \ HW3A.txt

试试这个:

C#版

a.Arguments = @"\"C:\Users\Asim Rahman\Desktop\Project Input Files\HW3A.txt\"";

VB版

a.Arguments = """C:\Users\Asim Rahman\Desktop\Project Input Files\HW3A.txt"""