CMD/BAT - [решено] Извлечение .ico файлов

Ответить
Аватара пользователя
vickt

CMD/BAT - [решено] Извлечение .ico файлов

Сообщение vickt »

Необходимо извлечь из .exe файла .ico при помощи BAT (можно использовать сторонние утилиты).

Я нашел одну утилиту - iconsext, но она извлекает все иконки, а надо чтобы извлекала первую.
Аватара пользователя
vickt

Re: CMD/BAT - [решено] Извлечение .ico файлов

Сообщение vickt »

Цитата vickt:



Необходимо извлечь из .exe файла .ico при помощи BAT (можно использовать сторонние утилиты)



Как на счет PowerShell?



Код:

Код: Выделить всё

Add-Type -AssemblyName System.Drawing
$ico = [Drawing.Icon]::ExtractAssociatedIcon('C:\Windows\explorer.exe')
$ms = New-Object IO.MemoryStream
$ico.Save($ms)
[IO.File]::WriteAllBytes('C:\output\1.ico', $ms.ToArray())
$ms.Dispose()
$ico.Dispose()
Аватара пользователя
vickt

Re: CMD/BAT - [решено] Извлечение .ico файлов

Сообщение vickt »

Цитата greg zakharov:



Как на счет PowerShell?
CMD/BAT - [решено] Извлечение .ico файлов




Я в Bat файлах далекий, а PowerShell для меня - темный лес.

Пытался его запустить через Bat, не получилось, а через powershell_ise.exe выдает ошибку.



Скрытый текст

[spoiler]PS C:\Windows\System32\WindowsPowerShell\v1.0> C:\Downloads\New.ps1

Невозможно загрузить файл C:\Downloads\New.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Executio

n_Policies по адресу
http://go.microsoft.com/fwlink/?LinkID=135170
.

+ CategoryInfo : Ошибка безопасности: (Изображение [], ParentContainsErrorRecordException

+ FullyQualifiedErrorId : UnauthorizedAccess



PS C:\Windows\System32\WindowsPowerShell\v1.0>[/spoiler]
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Извлечение .ico файлов

Сообщение Iska »

vickt, так пройдите по указанному адресу, прочитайте и включите исполнение неподписанных локальных скриптов.



Код:

Код: Выделить всё

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Аватара пользователя
vickt

Re: CMD/BAT - [решено] Извлечение .ico файлов

Сообщение vickt »

Цитата Iska:



Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
CMD/BAT - [решено] Извлечение .ico файлов




Я уже отключил политику выполнения Windows PowerShell.

Выдает следующее через powershell_ise.exe



Скрытый текст

[spoiler]PS C:\Windows\System32\WindowsPowerShell\v1.0> C:\Downloads\New.ps1

Не удалось найти тип [Drwaing.Icon].

C:\Downloads\New.ps1:2 знак:8

+ $ico = [Drwaing.Icon]::ExtractAssociatedIcon('C:\Windows\explorer.exe ...

+ ~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (Drwaing.Icon:TypeName) [], RuntimeException

+ FullyQualifiedErrorId : TypeNotFound



Невозможно вызвать метод для выражения со значением NULL.

C:\Downloads\New.ps1:5 знак:1

+ $ico.Save($ms)

+ ~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (Изображение [], RuntimeException

+ FullyQualifiedErrorId : InvokeMethodOnNull



Исключение при вызове "WriteAllBytes" с "2" аргументами: "Не удалось найти часть пути "C:\output\1.ico"."

C:\Downloads\New.ps1:6 знак:1

+ [IO.File]::WriteAllBytes('C:\output\1.ico', $ms.ToArray())

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [], MethodInvocationException

+ FullyQualifiedErrorId : DirectoryNotFoundException



Невозможно вызвать метод для выражения со значением NULL.

C:\Downloads\New.ps1:9 знак:1

+ $ico.Dispose()

+ ~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (Изображение [], RuntimeException

+ FullyQualifiedErrorId : InvokeMethodOnNull





PS C:\Windows\System32\WindowsPowerShell\v1.0>[/spoiler]






Мне надо запустить из Bat файла. Как это сделать?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Извлечение .ico файлов

Сообщение Iska »

vickt, поменяйте во второй строке:



Код:

Код: Выделить всё

$ico = [Drwaing.Icon]::ExtractAssociatedIcon('C:\Windows\explorer.exe')

на:



Код:

Код: Выделить всё

$ico = [Drawing.Icon]::ExtractAssociatedIcon('C:\Windows\explorer.exe')
Аватара пользователя
greg zakharov

Re: CMD/BAT - [решено] Извлечение .ico файлов

Сообщение greg zakharov »

vickt, сохраните как бат, например, iconer.cmd:



Код:

Код: Выделить всё

Add-Type -AssemblyName System.Drawing
try {
  $ico = [Drawing.Icon]::ExtractAssociatedIcon($args[0])
  $ms = New-Object IO.MemoryStream
  $ico.Save($ms)
  [IO.File]::WriteAllBytes($args[1], $ms.ToArray())
}
catch { $_ }
finally {
  if ($ms) { $ms.Dispose() }
  if ($ico ) { $ico.Dispose() }
}

Пример вызова будет выглядеть так:



Код:

Код: Выделить всё

iconer.cmd C:\Windows\explorer.exe E:\out\1.ico
Ответить

Вернуться в «Скриптовые языки администрирования Windows»