无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 239|回复: 18
打印 上一主题 下一主题

[求助] 创建当前文件夹的exe的快捷方式去桌面

[复制链接]
跳转到指定楼层
1#
2#
发表于 5 小时前 | 只看该作者
本帖最后由 cls822001 于 2025-11-22 10:10 编辑

NSIS 脚本
  1. !include "FileFunc.nsh"


  2. OutFile 遍历当前目录生成快捷方式.exe
  3. Icon F:\Tools\启动脚本\set.ico
  4. SilentInstall silent

  5. Section "创建桌面快捷方式"
  6.                 SetOutPath "$EXEDIR"
  7.                
  8.     StrCpy $0 "$EXEDIR"  

  9.     StrCpy $3 "$EXEFILE"

  10.     ; 开始查找EXE文件
  11.     FindFirst $1 $2 "$0\*.exe"

  12.     loop:
  13.         StrCmp $2 "" done  ; 如果找不到文件则跳转到done

  14.         ; 排除安装程序自身
  15.         StrCmp $2 "$3" skip  ; 如果文件名匹配则跳过
  16.         StrCmp $2 "Setup.exe" skip
  17.         StrCmp $2 "Installer.exe" skip
  18.         StrCmp $2 "安装程序.exe" skip
  19.         StrCpy $4 $2 -4 ;快捷方式去掉exe后缀
  20.         ; 创建桌面快捷方式
  21.         CreateShortCut "$DESKTOP\$4.lnk" "$0\$2" "" "$0\$2" 0
  22.         DetailPrint "已创建桌面快捷方式: $2"

  23.         skip:
  24.         FindNext $1 $2
  25.         Goto loop

  26.     done:
  27.         FindClose $1
  28. SectionEnd
复制代码


点评

助人为乐  详情 回复 发表于 4 小时前

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

3#
发表于 4 小时前 | 只看该作者
支持2#原创
回复

使用道具 举报

4#
发表于 4 小时前 | 只看该作者
本帖最后由 cls822001 于 2025-11-22 10:20 编辑

第二版 nsis
  1. !include "FileFunc.nsh"


  2. OutFile 一键桌面快捷方式.exe
  3. Icon F:\Tools\启动脚本\set.ico
  4. SilentInstall silent

  5. Section "创建桌面快捷方式"
  6.                 SetOutPath "$EXEDIR"
  7.     ; 获取当前目录和目录名
  8.     StrCpy $0 "$EXEDIR"

  9.     ; 获取目录名称
  10.     ${GetParent} "$0" $R0    ; 获取父目录路径
  11.     ${GetFileName} "$0" $R1  ; 获取当前目录名

  12.     ; 如果GetFileName获取失败,使用其他方法
  13.     StrCmp $R1 "" 0 +3
  14.     StrCpy $R1 "我的程序"  ; 默认名称
  15.     Goto create_shortcuts

  16.     ; 开始查找EXE文件
  17.     FindFirst $1 $2 "$0\*.exe"

  18.     create_shortcuts:
  19.     StrCmp $2 "" done

  20.     loop:
  21.         StrCmp $2 "" done

  22.         ; 排除安装程序自身
  23.         StrCmp $2 "$EXEFILE" skip

  24.         ; 使用目录名作为快捷方式名称
  25.         CreateShortCut "$DESKTOP\$R1.lnk" "$0\$2" "" "$0\$2" 0
  26.         DetailPrint "已创建桌面快捷方式: $R1"
  27.         Goto done  ; 只创建一个快捷方式

  28.         skip:
  29.         FindNext $1 $2
  30.         Goto loop

  31.     done:
  32.         FindClose $1
  33. SectionEnd
复制代码


点评

用不了,是bat吗?比方说我是 100.exe  详情 回复 发表于 3 小时前
好人  发表于 4 小时前

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

5#
发表于 4 小时前 | 只看该作者

助人为乐
回复

使用道具 举报

6#
发表于 4 小时前 | 只看该作者
感谢分享
回复

使用道具 举报

7#
发表于 3 小时前 | 只看该作者
以上方法貌似要用到(微软之外的)外部软件。

如果使用微软自带的方法,大致有两种,一种是 powershell 方法,另一种是 VBS 方法。前者不需要创建 .vbs 就能实现。后者需要创建 .vbs,然后运行 .vbs 即可。前者的缺点是,依赖 powershell,而 WinXP 没有 powershell,而且即使是 Win11,在 Win11 的 WinPE 下,也可能阉割掉了 powershell。所以,powershell 方法尽管很简捷,但却存在失败场景。

而 VBS 脚本的方法,虽然稍走弯路,但普适性强,基本不会失败。

请自行搜索相关方法和代码。建议用微软的 bing 来搜。
回复

使用道具 举报

8#
发表于 3 小时前 | 只看该作者
感谢分享
回复

使用道具 举报

9#
 楼主| 发表于 3 小时前 | 只看该作者

用不了,是bat吗?比方说我是  100.exe

点评

nsis 安装脚本 可以编译成exe运行  详情 回复 发表于 3 小时前
回复

使用道具 举报

10#
发表于 3 小时前 | 只看该作者
j2rong 发表于 2025-11-22 11:26
用不了,是bat吗?比方说我是  100.exe

nsis 安装脚本 可以编译成exe运行

点评

如果我想指定某个exe名字 要怎么改  详情 回复 发表于 3 小时前
回复

使用道具 举报

11#
发表于 3 小时前 | 只看该作者
学习了    之前都是手动创建的
回复

使用道具 举报

12#
 楼主| 发表于 3 小时前 | 只看该作者
cls822001 发表于 2025-11-22 11:29
nsis 安装脚本 可以编译成exe运行

如果我想指定某个exe名字   要怎么改

点评

排除那些就好了 第二版代码用文件夹名做快捷方式 就是遍历 所有EXE 要单个更简单 SetShellVarContext all CreateShortCut "$DESKTOP\显示器工具.lnk" "$EXEDIR\显示器工具.exe"  详情 回复 发表于 3 小时前
回复

使用道具 举报

13#
发表于 3 小时前 | 只看该作者
j2rong 发表于 2025-11-22 11:39
如果我想指定某个exe名字   要怎么改

排除那些就好了 第二版代码用文件夹名做快捷方式 就是遍历 所有EXE 要单个更简单
         SetShellVarContext all
         CreateShortCut "$DESKTOP\显示器工具.lnk" "$EXEDIR\显示器工具.exe"
回复

使用道具 举报

14#
发表于 2 小时前 | 只看该作者
本帖最后由 倒垃圾的歌者 于 2025-11-22 12:41 编辑

两种方法

批处理调用VBScript(创建文件夹快捷方式

  1. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%UserProfile%\Desktop\快捷方式名字.lnk""):b.TargetPath=""文件夹路径"":b.WorkingDirectory=""文件夹路径"":b.Save:close")
复制代码

批处理调用PowerShell(创建文件夹快捷方式
  1. powershell -command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('%UserProfile%\Desktop\快捷方式名字.lnk'); $s.TargetPath = '文件夹路径'; $s.WorkingDirectory = '%文件夹路径'; $s.Save()"
复制代码

注意:TargetPath对应快捷方式中的目标WorkingDirectory对应起始位置如果不是创建文件夹快捷方式该改为文件路径\XXX.exe



批处理调用VBScript(创建exe文件快捷方式
  1. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%UserProfile%\Desktop\快捷方式名字.lnk""):b.TargetPath=""文件夹路径\XXX.exe"":b.WorkingDirectory=""文件夹路径"":b.Save:close")
复制代码

批处理调用PowerShell(创建exe文件快捷方式

  1. powershell -command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('%UserProfile%\Desktop\快捷方式名字.lnk'); $s.TargetPath = '文件夹路径\XXX.exe'; $s.WorkingDirectory = '%文件夹路径'; $s.Save()"
复制代码



由于桌面文件夹路径可以更改,所以%UserProfile%\Desktop可能不是正确路径

所以可以改为

批处理调用VBScript(创建文件夹快捷方式

  1. for /f "skip=2 tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop') do set "My-Desktop=%%b"

  2. echo 当前用户桌面的路径为%My-Desktop%

  3. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%My-Desktop%\快捷方式名字.lnk""):b.TargetPath=""文件夹路径"":b.WorkingDirectory=""文件夹路径"":b.Save:close")
复制代码

批处理调用VBScript(创建exe文件快捷方式

  1. for /f "skip=2 tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop') do set "My-Desktop=%%b"

  2. echo 当前用户桌面的路径为%My-Desktop%

  3. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%My-Desktop%\快捷方式名字.lnk""):b.TargetPath=""文件夹路径\XXX.exe"":b.WorkingDirectory=""文件夹路径"":b.Save:close")
复制代码

批处理调用PowerShell(创建文件夹快捷方式

  1. for /f "skip=2 tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop') do set "My-Desktop=%%b"

  2. echo 当前用户桌面的路径为%My-Desktop%

  3. powershell -command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('%My-Desktop%\快捷方式名字.lnk'); $s.TargetPath = '文件夹路径'; $s.WorkingDirectory = '%文件夹路径'; $s.Save()"
复制代码

批处理调用PowerShell(创建exe文件快捷方式

  1. for /f "skip=2 tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop') do set "My-Desktop=%%b"

  2. echo 当前用户桌面的路径为%My-Desktop%

  3. powershell -command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('%My-Desktop%\快捷方式名字.lnk'); $s.TargetPath = '文件夹路径\XXX.exe'; $s.WorkingDirectory = '%文件夹路径'; $s.Save()"
复制代码

点评

谢谢分享!  详情 回复 发表于 1 小时前
回复

使用道具 举报

15#
发表于 1 小时前 | 只看该作者
倒垃圾的歌者 发表于 2025-11-22 12:31
两种方法

批处理调用VBScript(创建文件夹快捷方式)

谢谢分享!
回复

使用道具 举报

16#
发表于 15 分钟前 | 只看该作者
感谢分享
回复

使用道具 举报

17#
发表于 1 分钟前 | 只看该作者
多谢分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-11-22 15:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表