[英]Accessing the commandline using C#
我需要從C#應用程序中訪問命令行。 如果使用“ args”參數,我找不到找到不匹配的雙引號的方法。
目前,我正在使用的應用程序可以加密通過命令行傳遞給它的字符串。
例如。
program.exe -encrypt somestring
結果是:
EZs/6rWxvJ82+VE8unJ0Xw==
現在,如果用戶輸入以下內容:
program.exe -encrypt somestring extra characters
它會忽略“ somestring”之后的所有內容(您仍然可以通過“ args”參數訪問其余的值)。
您可以使用雙引號輕松解決此問題:
program.exe -encrypt "somestring extra characters"
當然,如果您要使用嵌入式引號,則可以使用“ \\”將其轉義:
program.exe -encrypt "somestring \"extra\" characters"
當用戶輸入類似以下內容時,就會發生此問題:
program.exe -encrypt "somestring extra characters
要么:
program.exe -encrypt somestring ex"tra characters
該程序將完全忽略雙引號,這不是用戶期望的。 我想檢測類似的情況,並通知用戶有關不匹配/未轉義的引號,否則它們可能最終得到錯誤字符串的加密版本。
這是命令行將參數傳遞給C#程序的方式。 您無法更改。 但是,您可以整體訪問命令參數字符串並親自執行驗證。
只需手動執行:檢查-encrypt
參數后面是否只有一個參數,如果不是,則下一個參數以雙引號開頭,最后一個參數以雙引號結尾。 如果這些都不發生,則向用戶拋出一個自定義錯誤。
當后一個參數-encrypt
加上雙引號開始,最后一個參數結束與雙引號建立自己使用字符串Array.Copy
或那樣的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.