我正在尝试创建一个批处理文件,该文件将把桌面快捷图标从icon0切换到icon1,并在第二次执行时再次返回。
Desktop快捷方式指向Desktop/toggleicon.BAT中的批处理文件(批处理文件位于同一个目录),但在第一次执行时更改图标的第一步就遇到了问题。
这是我在批处理文件中的代码:
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
我想我只是在搜索错误的东西。
如果你知道整个密码的话,太棒了。如果您可以帮助当前代码更改图标,那么这也很好,当然,我会标记为解决方案等等。
发布于 2016-04-26 07:24:31
这是一种批处理代码,生成一个vbscript以在桌面上创建一个快捷方式,图标可以在您调用这个Sub时随时更改,如下所示:
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "Winver.exe,0"
或致:
Call:CreateShortcut "%windir%\system32\calc.exe" "Calculatrice" "%Windir%\System32\moricons.dll,6"
要测试的整个批处理脚本:
@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
::****************************************************************************************************
发布于 2019-12-21 23:14:40
另一种更简单的方法是,如果您开放使用Powershell,也可以这样做。将下面的powershell脚本保存为MakeShortcut.ps1
更改文件路径、扩展名、快捷方式名称、.ico文件路径和名称等以满足您的需要。
# 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文件中,您可以在条件检查的函数中检查和修改该值来跟踪状态)。
:TestShortcut
IF EXIST "ARBITRARYFILEPATH\NAME.txt" GOTO :EOF
Powershell.exe -NoProfile -executionpolicy -Bypass -File FILEPATHTO\CreateShortcut.ps1
ECHO ShortcutInstalled >ARBITRARYFILEPATH\NAME.txt
GOTO :EOF
https://stackoverflow.com/questions/36854003
复制相似问题