C# process.Start 文件名和传递参数

Posted

技术标签:

【中文标题】C# process.Start 文件名和传递参数【英文标题】:C# process.Start filename and passing arguments 【发布时间】:2017-03-10 16:53:08 【问题描述】:

我需要打开文件 test.mdb。 路径必须是从相对于 C# 程序 exe 所在的任何目录构建的完整路径

我需要传递参数行,该行将像这样 /cmd "MyArgument" 批量传递 要使 /cmd 开关起作用,路径必须包含已安装的 MSACCESS.EXE 的完整路径

我只是不知道如何将完整路径传递给 MSACCESS>EXE,然后是 test.mdb 的完整路径,然后是参数。

为了帮助我,我发布了以下批处理字符串,但我需要 C#

"C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "C:\Documents and Settings\User\Test 示例文件夹\test.mdb" /cmd "MyArgument"

明确两个重点:

test.mdb 完整路径必须由启动的 C# exe 自动确定,它将是 C# exe 路径,但带有 test.mdb。

如果 C# exe 程序可以自动检查哪个版本(即 Office 10、Office 12 等)并使用它,那么 MSACCESS>EXE 路径必须是安装的 MSACCESS.EXE 版本的完整路径。

这是我目前的代码:

var filePath = @"test.mdb";

Process process = new Process();
process.StartInfo.FileName = filePath;
process.StartInfo.Arguments = "/cmd " + "\"MyArgument\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();

【问题讨论】:

db 文件的路径将是您的参数之一。 获取 test.mdb 完整路径很简单:将 var filePath = @"test.mdb"; 更改为 string filePath = new System.IO.FileInfo("test.mdb").FullName; juharr & Mvarta 我试过了,但它不起作用你能发布解决我帖子中所有要点的工作代码示例,包括任何使用引用等,以便代码编译我是 C# 新手和无法让它工作,所以解决我所有观点的代码的工作示例对我有好处谢谢 【参考方案1】:

我认为您无需担心检测 Office 版本,这应该适合您:

        string filepath = '"' + Directory.GetCurrentDirectory() + "\\test.mdb" + '"';
        string acc_cmd_arg = "HELLO";

        using (System.Diagnostics.Process process = new System.Diagnostics.Process() )  
            process.StartInfo.FileName = "msaccess.exe";
            process.StartInfo.Arguments = filepath + " /cmd " + acc_cmd_arg;
            process.Start(); 
        

【讨论】:

以上是关于C# process.Start 文件名和传递参数的主要内容,如果未能解决你的问题,请参考以下文章

Process.Start 与网络共享和空间

C# Process Start 需要带双引号的参数 - 它们消失了

C# Process.Start with credentials 失败,拒绝访问

WPF 利用Process.Start()方法启动指定路径下的exe文件并传递参数接收参数

C#中怎么用process调用一个exe文件并传入参数?

将 PowerShell 参数传递给 Process.Start