簡體   English   中英

C#傳遞參數中的路徑

[英]C# pass path in argument

我正在將cmd作為C#中的進程啟動,我想在參數中傳遞文件路徑。 怎么做?

Process CommandStart = new Process();
CommandStart.StartInfo.UseShellExecute = true;
CommandStart.StartInfo.RedirectStandardOutput = false;
CommandStart.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
CommandStart.StartInfo.FileName = "cmd";
CommandStart.StartInfo.Arguments = "(here i want to put a file path to a executable) -arg bla -anotherArg blabla < (and here I want to put another file path)";
CommandStart.Start();
CommandStart.WaitForExit();
CommandStart.Close();

編輯:

        Process MySQLDump = new Process();
        MySQLDump.StartInfo.UseShellExecute = true;
        MySQLDump.StartInfo.RedirectStandardOutput = false;
        MySQLDump.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        MySQLDump.StartInfo.FileName = "cmd";
        MySQLDump.StartInfo.Arguments = "/c \"\"" + MySQLDumpExecutablePath + "\" -u " + SQLActions.MySQLUser + " -p" + SQLActions.MySQLPassword + " -h " + SQLActions.MySQLServer + " --port=" + SQLActions.MySQLPort + " " + SQLActions.MySQLDatabase + " \" > " + SQLActions.MySQLDatabase + "_date_" + date + ".sql";
        MySQLDump.Start();
        MySQLDump.WaitForExit();
        MySQLDump.Close();

您需要將文件路徑放在雙引號中,並使用逐字字符串文字( @ )作為SLaks提及。

CommandStart.StartInfo.Arguments = @"""C:\MyPath\file.exe"" -arg bla -anotherArg";

OpenFileDialog的示例

using(OpenFileDialog ofd = new OpenFileDialog())
{
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
       string filePath = "\"" + ofd.FileName + "\"";

       //..set up process..

       CommandStart.StartInfo.Arguments = filePath + " -arg bla -anotherArg";
    }
 }

更新以發表評論

您可以使用String.Format格式化字符串。

string finalPath = String.Format("\"{0}{1}_date_{2}.sql\"", AppDomain.CurrentDomain.BaseDirectory, SQLActions.MySQLDatabase, date);

然后將finalPath傳遞到參數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM