2015-02-23 69 views
0

也許這是一個特殊的問題,但我認爲不是。至少在某種程度上,它涉及cmd.exe和powershell之間的區別,涉及它如何將參數傳遞給命令行程序。如何防止在powershell shell中使用通配符掛起。 (perforce)

這Perforce的命令,在CMD.EXE提示符下發出,是有問題的:

P4文件//這/那/ *

,因爲它需要很長的時間來作出迴應。但如果我引用的路徑是這樣的:

P4文件「//這/那/ *」

的反應是立竿見影的。但是,從PowerShell提示,引用路徑沒有幫助。我找不到在PS提示符下快速響應的方法。因此,調用應用程序的cmd.exe和powershell方式有一些區別。

不要被正斜線的路徑分散注意力。這是p4存儲庫中的一條路徑,並不意味着被解釋爲文件系統路徑。

+2

你能舉個例子嗎?據我所知,PowerShell不會擴展通配符,因此cmdlet有責任以正確的方式處理通配符。例如'write *'只是寫'*',沒有擴展。 – PetSerAl 2015-02-23 05:51:17

+0

你可能是對的,我想我得出了一個結論。我會重申我的問題。 – 2015-02-23 06:24:26

回答

2

當參數不包含空格或以引號開頭時,PowerShell在將參數傳遞給本機應用時不會在參數周圍添加引號。所以這個PowerShell命令:

p4 files "//this/that/*" 

將導致此命令行:

p4 files //this/that/* 

爲了解決你的問題,你需要把報價從字面上的參數字符串:

p4 files '"//this/that/*"' 

p4 files `"//this/that/*`" 

p4 files """//this/that/*"""