2015-02-23 6 views
0

Возможно, это определенно проблема с перфорацией, но я думаю, что нет. По крайней мере, в некотором роде, это связано с различием между cmd.exe и powershell, включая передачу параметров в программу командной строки.Как предотвратить зависание с подстановочным знаком в оболочке скорлупы. (perforce)

Эта команда неволей, выдаются в cmd.exe строки проблематична:

p4 файлы // это/что/*

как это занимает много времени, чтобы ответить. НО, если я процитирую этот путь:

p4 файлы «// это/что/*»

Ответ немедленно. Однако, из подсказки powershell, цитирование пути не помогает. Я не могу найти способ быстро получить ответ в командной строке PS. Таким образом, существует некоторая разница между способом cmd.exe и powershell вызова приложения.

Не отвлекайтесь на форму пути с помощью косых черт. Это путь в репозитории p4 и не предназначен для интерпретации как путь к файловой системе.

+2

Можете ли вы привести пример? Насколько мне известно, PowerShell не расширяет подстановочные знаки, ответственность за соответствующие шаблоны - это ответственность командлета. Например, 'write *' просто пишите '*', никаких расширений не сделано. – PetSerAl

+0

Вы, вероятно, правы, я думаю, я подпрыгнул до конца. Я перефразирую свой вопрос. –

ответ

2

PowerShell не добавляет кавычки вокруг параметра при передаче его в родные приложения, когда параметр не содержит пробела или начинается с цитаты. Так эта команда PowerShell:

p4 files "//this/that/*" 

приведет к этой командной строке:

p4 files //this/that/* 

Чтобы решить проблему, вы должны поставить кавычки буквально в строке параметров:

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

или

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

или

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