我無法將引數傳遞給包含"". 當我使用等效代碼但將應用程式更改為 cmd 時,""它們能夠通過。
我希望 powershell 執行的論點是:
Copy-Item -Path "{Working Directory}\W11F-assets\" -Destination "C:\\Windows\W11F-assets" -Recurse
這是呼叫該函式的代碼:
ProcessStartInfo movefile = new ProcessStartInfo("powershell.exe");
string flocation = Directory.GetCurrentDirectory();
movefile.UseShellExecute = true;
movefile.Arguments = "Copy-Item -Path \"" flocation "\\W11F-assets\" -Destination \"C:\\Windows\\W11F-assets\" -Recurse";
Process.Start(movefile);
uj5u.com熱心網友回復:
當命令傳遞到 PowerShell CLI 的(位置隱含的)-Command(-c)引數時,任何未轉義 "的字符。在命令列處理期間被剝離,然后才將引數(空格連接以形成單個字串,如果有多個)解釋為 PowerShell 代碼。
所以:
"作為命令的一部分保留的字符必須進行\"轉義。此外,為了防止可能不需要的空白規范化(將多個相鄰空格合并為一個),最好將命令包含在未轉義的嵌入
"..."整體中。
為了完全闡明一個應該作業的解決方案,明確使用-Command并-NoProfile避免通常不必要的組態檔加載,并為概念清晰提供額外的空間,利用插值 ( $) 逐字 ( @) 字串(其中\可以是按原樣使用,并且"必須轉義為""):
movefile.Arguments =
$@"-NoProfile -Command "" Copy-Item -Path \""{flocation}\W11F-assets\"" -Destination \""C:\Windows\W11F-assets\"" -Recurse "" ";
uj5u.com熱心網友回復:
能夠通過替換來解決\"問題'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429859.html
上一篇:Unity參考不適用于VisualStudio2022
下一篇:如何使VisualStudio專案使用<ReferencePackage>或DLL參考和<ProjectReference>一起在Debug和DLLRelease之間切換?
