Board logo

标题: [其他] 【求助】bat能不能修改:快捷方式-属性-目标?谢谢 [打印本页]

作者: yyz219    时间: 2023-12-16 15:40     标题: 【求助】bat能不能修改:快捷方式-属性-目标?谢谢

本帖最后由 yyz219 于 2023-12-18 08:17 编辑

bat能不能修改:快捷方式-属性-目标?谢谢



作者: xm4854    时间: 2023-12-16 19:01

lnk快捷方式是一种二进制文件,bat无法直接编辑
可以研究一下Python下的LnkParse3、pylnk

这是微软的关于LNK文件的文档
[MS-SHLLINK]: Shell Link (.LNK) Binary File Format
作者: buyiyang    时间: 2023-12-16 19:50

js
  1. shortcutPath="D:\\0.lnk";
  2. TargetPath="D:\\00.exe";
  3. function withObject(obj,callback){callback(obj);}
  4. withObject(new ActiveXObject("WScript.Shell").CreateShortcut(shortcutPath),function(shortcut){
  5.     shortcut.TargetPath=TargetPath;
  6.     shortcut.Save();
  7. });
复制代码

作者: yyz219    时间: 2023-12-16 20:16

回复 2# xm4854


    谢谢
作者: yyz219    时间: 2023-12-16 20:16

回复 3# buyiyang


    谢谢
作者: aloha20200628    时间: 2023-12-16 20:57

本帖最后由 aloha20200628 于 2023-12-16 21:14 编辑


给一个cmd+jscript混编版本,更便于使用。代码存为批处理脚本,如 test.cmd
  1. @set @v=1 /*
  2. @echo off
  3. set/p "sc=拖入快捷方式:"
  4. set/p "newP=拖入新目标路径所指向的文件:"
  5. cscript /e:jscript "%~f0" %sc% %newP%
  6. exit/b
  7. */
  8. v=WSH.arguments;
  9. ws=new ActiveXObject("WScript.shell");
  10. lnk=ws.createshortcut(v(0));
  11. lnk.targetpath=v(1); lnk.save();
  12. WSH.quit();
复制代码

作者: ShowCode    时间: 2023-12-16 21:33

回复 1# yyz219


V1.bat
  1. # & cls & @cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Out-String | Invoke-Expression " & exit /b
  2. $Shell = New-Object -ComObject WScript.Shell
  3. $Link = $Shell.CreateShortcut("C:\Users\Administrator\Desktop\00.exe.lnk")
  4. $Link.TargetPath = "D:\00.bat"
  5. $Link.Save()
复制代码

作者: Kinglion    时间: 2023-12-16 22:17

回复 1# yyz219



如果只是想修改桌面快捷方式对应的文件,为何不换个思路,重新创建新的快捷方式呢?  这个新的快捷方式指向您重新定义的程序或文档。

示例命令行:
mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""AllUsersStartup"") & ""\域脚本.lnk""):b.TargetPath=""c:\xk\Domain.exe"":b.WorkingDirectory=""c:\xk"":b.Save:close")

其中:
SpecialFolders 属性包括以下常见的文件夹路径:

- AllUsersDesktop:所有用户的桌面文件夹。
- AllUsersStartMenu:所有用户的开始菜单文件夹。
- AllUsersPrograms:所有用户的程序文件夹。
- AllUsersStartup:所有用户的启动文件夹。
- Desktop:当前用户的桌面文件夹。
- Favorites:当前用户的收藏夹文件夹。
- Fonts:系统字体文件夹。
- MyDocuments:当前用户的文档文件夹。
- Programs: 当前用户的程序文件夹。
- Recent:当前用户最近使用的文件夹。
- SendTo:发送到菜单的文件夹路径。

除了常见的文件夹路径,Windows 系统可能还包含其他自定义的文件夹路径。使用 objShell.SpecialFolders("") 可以返回所有可用的文件夹路径。
作者: yyz219    时间: 2023-12-17 18:26

回复 8# Kinglion


    谢谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2