[英]parse Main Args[] string from windows context menu
我使用以下代碼來實現由我的應用程序打開的右鍵單擊文件。 我的目標是將該文件的路徑放入我的程序中。
我用:
public static string path = "";
static void Main(string[] args)
{
if (args.Length > 0)
{
path = args[0];
}
}
然后我使用變量path
,它是應用程序通過上下文菜單打開的文件。
當文件名不包含任何空格時,導入文件路徑沒有任何問題。 但是當文件名包含任何空格時,除了它之外顯示的文件名除去了文件名中第一個空格之后的字母。
fileName.pdf
→ fileName.pdf
fileName blah blah.pdf
→ filename
第二個示例顯示包含空格的文件未按原樣導入。
因此,如果有任何想法如何解析包含空格的文件而其名稱沒有任何問題。
這是因為操作系統會嘗試為您拆分命令行參數,但如果您不在正確的位置放置引號,則可能會出錯。 默認情況下,以下命令行
MyConsoleApp.exe FileName blah blah.pdf
將導致args
包含3個字符串FileName
, blah
和blah.pdf
(由空格分隔)
例如,解決此問題的最常見解決方案是在調用應用程序時用引號括起參數
MyConsoleApp.exe "FileName blah blah.pdf"
這將導致args
長度為1,第一個字符串的值為FileName blah blah.pdf
(操作系統刪除了額外的引號)。
另一種方法是使用Environment.CommandLine屬性獲取用於調用應用程序的完整未解析命令行,並手動解析該字符串。 這為您提供了更大的靈活性(因為在使用傳遞給Main的args
參數時,並不總是能夠識別參數是否被引號括起來),但是更省力 - 您應該確保在啟動應用程序時使用引號。
有人發布了一個完美的答案,但是在我提出它之前將其刪除並使其成為正確的答案。
答案是我必須將“%1”更改為“%0”並且它有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.