如何从exe文件中获取图标并通过批处理代码保存到驱动器

时间:2015-10-12 21:15:56

标签: batch-file

我现在可能需要你的帮助,我一直在谷歌搜索但是我没有得到真正的答案,所以我平衡我的问题。 如何获取.exe文件的图标并使用批处理代码保存到硬盘? 感谢

1 个答案:

答案 0 :(得分:1)

扩展上面建议的wOxxOm,您可以在批处理脚本中使用PowerShell命令执行此操作,如下所示:

@echo off
setlocal

set "exe_in=%~1"
set "ico_out=%~2"

set "psCommand="[void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');^
[Drawing.Icon]::ExtractAssociatedIcon(\"%exe_in%\").ToBitmap().Save(\"%ico_out%\")""

powershell -noprofile -noninteractive %psCommand%

使用示例:

script.bat c:\portaputty\putty.exe putty.ico

...会将putty.ico保存到当前工作目录。

或者如果你想让脚本保存到basename.ico而不必指定参数2,你可以这样修饰:

@echo off
setlocal

set "exe_in=%~1"
set "out_dir=."

if not "%~2"=="" 2>NUL pushd "%~2" && ( call set "out_dir=%%CD%%" & popd )
set "ico_out=%out_dir%\%~n1.ico"

set "psCommand="[void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');^
[Drawing.Icon]::ExtractAssociatedIcon(\"%exe_in%\").ToBitmap().Save(\"%ico_out%\")""

powershell -noprofile -noninteractive %psCommand%

使用示例:

script.bat c:\portaputty\putty.exe

...会将putty.ico保存到当前工作目录。

script.bat c:\portaputty\putty.exe "%temp%"

...将保存%temp%\ putty.ico。