首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBScript或批处理更改快捷图标

使用VBScript或批处理更改快捷图标
EN

Stack Overflow用户
提问于 2016-04-26 01:52:04
回答 2查看 9.4K关注 0票数 3

我正在尝试创建一个批处理文件,该文件将把桌面快捷图标从icon0切换到icon1,并在第二次执行时再次返回。

Desktop快捷方式指向Desktop/toggleicon.BAT中的批处理文件(批处理文件位于同一个目录),但在第一次执行时更改图标的第一步就遇到了问题。

这是我在批处理文件中的代码:

代码语言:javascript
运行
复制
Const DESKTOP = &H10&
Set objShell = CreateObject(“Shell.Application”)
Set objFolder = objShell.NameSpace(DESKTOP)
Set objFolderItem = objFolder.ParseName(“Shortcut.lnk”)
Set objShortcut = objFolderItem.GetLink
objShortcut.SetIconLocation “C:\Windows\System32\SHELL32.dll”, 13
objShortcut.Save

我想我只是在搜索错误的东西。

如果你知道整个密码的话,太棒了。如果您可以帮助当前代码更改图标,那么这也很好,当然,我会标记为解决方案等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-26 07:24:31

这是一种批处理代码,生成一个vbscript以在桌面上创建一个快捷方式,图标可以在您调用这个Sub时随时更改,如下所示:

代码语言:javascript
运行
复制
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "Winver.exe,0"

或致:

代码语言:javascript
运行
复制
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "%Windir%\System32\moricons.dll,6"

要测试的整个批处理脚本:

代码语言:javascript
运行
复制
@echo off
Title Create a shortcut on your Desktop with icon that can be changed any time by Hackoo
mode con cols=75 lines=3 & color 9B
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "Winver.exe,0"
echo(
echo                Hit any key to change the icon shortcut....
pause>nul
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "%Windir%\System32\moricons.dll,6"
cls & color 9E
echo(
echo                   The icon shortcut has been changed...
echo                Hit any key to change the icon shortcut....
pause>nul
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "%Windir%\System32\SHELL32.dll,13"
cls & color 9D
echo(
echo                   The icon shortcut has been changed...
echo                Hit any key to change the icon shortcut....
pause>nul
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "%Windir%\System32\SHELL32.dll,14"
cls & color 9F
echo(
echo                   The icon shortcut has been changed...
pause>nul
Exit /b
::****************************************************************************************************
:CreateShortcut <ApplicationPath> <ShortcutName> <Icon>
(
echo Call Shortcut("%~1","%~2","%~3"^)
echo ^'**********************************************************************************************^)
echo Sub Shortcut(ApplicationPath,Name,Icon^)
echo    Dim objShell,DesktopPath,objShortCut,MyTab
echo    Set objShell = CreateObject("WScript.Shell"^)
echo    MyTab = Split^(ApplicationPath,"\"^)
echo    If Name = "" Then
echo    Name = MyTab(UBound^(MyTab^)^)
echo    End if
echo    DesktopPath = objShell.SpecialFolders("Desktop"^)
echo    Set objShortCut = objShell.CreateShortcut(DesktopPath ^& "\" ^& Name ^& ".lnk"^)
echo    objShortCut.TargetPath = Dblquote^(ApplicationPath^)
echo    ObjShortCut.IconLocation = Icon
echo    objShortCut.Save
echo End Sub
echo ^'**********************************************************************************************
echo ^'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo    DblQuote = Chr(34^) ^& Str ^& Chr^(34^)
echo End Function
echo ^'**********************************************************************************************
)> Shortcutme.vbs
Start /wait Shortcutme.vbs
Del Shortcutme.vbs
Exit /b
::****************************************************************************************************
票数 3
EN

Stack Overflow用户

发布于 2019-12-21 23:14:40

另一种更简单的方法是,如果您开放使用Powershell,也可以这样做。将下面的powershell脚本保存为MakeShortcut.ps1

更改文件路径、扩展名、快捷方式名称、.ico文件路径和名称等以满足您的需要。

代码语言:javascript
运行
复制
# Create a Shortcut with Windows PowerShell
$SourceFileLocation = "$env:userprofile\FILEPATHTOTARGETPROGRAM.EXTENSION"
$ShortcutLocation = "$env:userprofile\Desktop\SHORTCUTNAME.lnk"
#New-Object : Creates an instance of a Microsoft .NET Framework or COM object.
#-ComObject WScript.Shell: This creates an instance of the COM object that represents the WScript.Shell for invoke CreateShortCut
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutLocation)
$Shortcut.TargetPath = $SourceFileLocation
$Shortcut.IconLocation = "$env:userprofile\FILEPATHTO.ico"
#Save the Shortcut to the TargetPath
$Shortcut.Save()

在您的.bat程序中,调用一个函数(此实例中的测试快捷方式)以检查该快捷方式是否已经创建,如果没有,则执行该快捷方式。选择要将确认文件存储为/ to的位置和名称。

在TestShortcut中使用条件检查来控制图标被更改为什么(通过将一个值存储在ARBITRARYFILEPATH\NAME.txt文件中,您可以在条件检查的函数中检查和修改该值来跟踪状态)。

代码语言:javascript
运行
复制
:TestShortcut

IF EXIST "ARBITRARYFILEPATH\NAME.txt" GOTO :EOF

Powershell.exe -NoProfile -executionpolicy -Bypass -File FILEPATHTO\CreateShortcut.ps1

ECHO ShortcutInstalled >ARBITRARYFILEPATH\NAME.txt

GOTO :EOF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36854003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档