2013-03-22 17 views
-1

我正在嘗試將文件名傳遞給cmd提示符。我看了很多地方,但似乎找不到答案 - 我相信它很簡單。字符串文字中不需要的斜槓

我的字符串是建立像這樣:

string cmd = string.Format(@" -u{0} -p{1} -h{2} -P{3} {4} < ""{5}""", 
       user, pass, server, port, database, filename); 

然而結果是,像這樣的字符串:

-uuser -ppass -hhost -P1234 database < \"C:\\my file.sql\" 

如何我之前和在文件名後刪除\?它導致進程與文件運行無法找到錯誤。

我的字符串需要:

-uuser -ppass -hhost -P1234 database < "C:\\my file.sql" 

編輯: OK,忽略這個問題..還有別的東西用的Process.Start goind上();

+3

你是如何看的字符串的內容?一些可視化器將會避免引號。使用文本可視化工具查看它,而不是工具提示或即時窗口。 – rein 2013-03-22 01:09:08

+0

這實際上傳遞到我正在查看它的cmd窗口。是的,它在文本展示臺中看起來是一樣的 – Simon 2013-03-22 01:10:31

+0

好吧,這是離奇的。 – rein 2013-03-22 01:12:41

回答

3

我試着在Visual Studio中運行下面的代碼,輸出是正確的。您很可能會查看Visual Studio中的調試信息,該信息將會引用引號。

string cmd = string.Format(@" -u{0} -p{1} -h{2} -P{3} {4} < ""{5}""", 
    "Test", "Test2", "server", "1337", "db", "C:\\filename.sql"); 

Console.WriteLine(cmd); 
Console.Read(); 

實際產量-uTest -pTest2 -hserver -P1337 db < "C:\filename.sql"