2goarray работает в cmd, но не powershell - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь использовать 2goarray для записи .ico-файла в go файл, чтобы я мог использовать его в systray .

Моя проблема является то, что это работает в cmd:

TYPE icon.ico | 2goarray Data icon > icon.go

Но выполнение эквивалентной команды в powershell не:

Get-Content .\icon.ico | 2goarray Data icon | Out-File -FilePath .\icon.go -Encoding UTF8

Когда я говорю, что это не работает, я не означает ошибку, я имею в виду, что массив, созданный 2goarray, неверен, он содержит данные, которые systray не распознает как значок.

Для справки здесь - рабочий значок . go, здесь - сломанный / поврежденный, созданный PowerShell, а здесь - значок, который я использую.

Я подозреваю, что он имеет какое-то отношение с тем, как PowerShell передает вещи как объекты, но я не уверен?

1 Ответ

1 голос
/ 22 апреля 2020

Ваша задача - передать двоичные данные в PowerShell, что не так просто. Я проверил ваш пример с помощью этой команды и получил значок «рабочий». go:

Start-Process 2goarray -ArgumentList "Data icon" -RedirectStandardInput .\icon.ico -RedirectStandardOutput .\icon.go

Но это решение кажется довольно медленным по сравнению с cmd. Из PowerShell вы также всегда можете вызвать cmd, если хотите, что работает на удивление быстрее для вашего примера:

Start-Process cmd -ArgumentList "/c TYPE icon.ico | 2goarray Data icon > icon.go"

Часто вызывать cmd из PowerShell плохо, потому что PowerShell может почти все, что cmd может сделать, и часто больше, но для вашего примера это, кажется, лучшее решение.

...