команда типа (Powershell) выдает ошибку «Не удается найти позиционный параметр, который принимает аргумент»

Я пытаюсь использовать «uglifyjs», чтобы минимизировать все мои файлы javascript в один файл «.js», чтобы обеспечить правильную работу тестирования karma ng-scenario e2e. Однако, когда я ввожу это

type My.js MyLogon.js MyMenu.js Common\directives\BaseDirectives.js Common\factories\BaseFactories.js Module\AccountConfirmationModule.js Module\AccountModule.js Module\ApplicationModule.js Module\ApplicationRoleModule.js Module\HeaderModule.js Module\Index.js Module\LogOnModule.js Module\PasswordModule.js Module\QAModule.js Module\UsernameModule.js > files.min.js | uglifyjs -o files.min.js

Я получаю следующую ошибку

Get-Content: невозможно найти позиционный параметр, который принимает аргумент «MyLogon.js». В строке:1 символ:5

Что я делаю не так?


person sincesidslid    schedule 29.10.2013    source источник
comment
Не могли бы вы отформатировать раздел кода в более читаемый вид? Спасибо.   -  person JensG    schedule 30.10.2013


Ответы (3)


Команда type в оболочке Cmd поддерживает ввод нескольких файлов одновременно. Имена файлов разделены пробелом. В Powershell type — это псевдоним для Get-Content. Он поддерживает несколько исходных файлов, но не использует разделение пробелами. Необходим массив, как указано в параметре -Path, который поддерживает массив строк:

man type    
Get-Content [-Path] <string[]> [-Credential <PSCredential>] ...

Попробуйте передать командлету массив имен файлов. Вот так,

type @("My.js", "MyLogon.js", "MyMenu.js")  | uglifyjs -o files.min.js
person vonPryz    schedule 29.10.2013
comment
К вашему сведению, @() и кавычки не нужны, например. Get-Content my.js,MyLogon.js,MyMenu.js | ... работает нормально. - person Keith Hill; 30.10.2013

Если все файлы находятся в текущей папке и нет других файлов *.js:

if (test-path files.min.js) { remove-item files.min.js }
gci *.js | foreach{ type $_ >> files.min.js }
uglifyjs -o files.min.js

Если это не так, список можно настроить следующим образом:

$files = ("My.js", "MyLogon.js", "MyMenu.js", "Common\directives\BaseDirectives.js", "Common\factories\BaseFactories.js", "Module\AccountConfirmationModule.js", "Module\AccountModule.js", "Module\ApplicationModule.js", "Module\ApplicationRoleModule.js", "Module\HeaderModule.js", "Module\Index.js", "Module\LogOnModule.js", "Module\PasswordModule.js", "Module\QAModule.js", "Module\UsernameModule.js")
if (test-path files.min.js) { remove-item files.min.js }
$files | foreach{ type $_ >> files.min.js }
uglifyjs -o files.min.js
person JensG    schedule 29.10.2013

В powershell список разделяется запятой, а не пробелом

type file1, file2, file3
person Eris    schedule 29.10.2013