簡體   English   中英

如果用戶名中有空格,我可以使用 cmd 或 powershell 運行 exe 嗎?

[英]Can i run a exe with cmd or powershell if i have spaces in username?

前任:

cmd /C start C:\Users\Bob Builder\Desktop\New Folder\test.exe

我正在嘗試使用 cmd 啟動文件,但由於路徑中有空格,因此 cmd 在 Bob 之后拋出錯誤。

錯誤:

“Windows 找不到 C:\\Users\\Bob。請確保您輸入的名稱正確無誤,然后重試。”

系統找不到文件 C:\\Users\\Bob。

它只是無法接受空格。 這讓我發瘋了,因為我被 C# 開箱即用的工作寵壞了。 我對此知之甚少,我花了太多時間試圖弄清楚這一點。 一些幫助將不勝感激。

cmd /C start "C:\\Users\\Bob Builder\\Desktop\\New Folder\\test.exe"

報價是你的朋友。 有時甚至雙引號也是如此!

  • 為了將包含空格路徑識別為單個路徑(參數),它必須被引用

  • 為了使可執行以當前控制台窗口執行,同步地,與它的流連接至主叫殼,它必須直接不通過調用start

cmd.exe直接調用(僅支持"..."引用):

"C:\Users\Bob Builder\Desktop\New Folder\test.exe"

來自 PowerShell:

& 'C:\Users\Bob Builder\Desktop\New Folder\test.exe'

筆記:

  • PowerShell 還支持'...'字符串(單引號),如果您不需要擴展變量(字符串插值),它們是比"..." (雙引號)字符串更可取的逐字字符串 - 請參閱概念about_Quoting_Rules幫助主題。

  • 出於語法原因,PowerShell 需要使用& 調用運算符來調用被引用和/或包含變量引用的命令- 有關詳細信息,請參閱此答案


相比之下,使用start in cmd.exe / Start-Process in PowerShell (其內置別名也是start新窗口(在 Windows 上)中異步啟動可執行文件,沒有(直接)捕獲啟動的能力可執行文件的輸出:

cmd.exe

start "title" "C:\Users\Bob Builder\Desktop\New Folder\test.exe"

筆記:

  • 在這種情況下,出於語法原因需要指定"title" ——即自行選擇的(控制台)窗口標題:沒有它,雙引號路徑本身將被解釋為窗口標題,並且 - 隱含 - 可執行以啟動將是另一個cmd.exe實例。

  • 請注意,如果您以這種方式啟動GUI應用程序,則 title 參數無關緊要,因為不會創建新的控制台窗口。
    相反,如果您啟動由雙引號路徑指定的控制台應用程序,因此必須使用標題參數,請注意""將導致新窗口沒有標題。

來自 PowerShell(參數-FilePath是位置隱含的):

Start-Process 'C:\Users\Bob Builder\Desktop\New Folder\test.exe'

筆記:

  • Start-Process支持指定窗口標題,所以你可能需要調用cmd.exe的內部start該命令(或不被支持的其他功能Start-Process ,如指定進程的優先級)。

  • 要解決引用問題,請通過將整個start命令作為單個字符串傳遞給cmd /c來從 PowerShell 調用cmd.exestart

     cmd /c 'start "title" "C:\\Users\\Bob Builder\\Desktop\\New Folder\\test.exe"'

好像 cmd 對我不起作用。 Powershell 使用此腳本:

$env:Path += ";C:\Users\Bob Builder\Desktop\New Folder\"
test.exe

暫無
暫無

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

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