找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23738|回复: 5

[文件操作] 已解决--关于shortcut创建快捷方式的批处理

[复制链接]
发表于 2020-5-9 08:40:49 | 显示全部楼层 |阅读模式
本帖最后由 大地 于 2020-5-10 11:01 编辑

.
上次辛苦了went老师写了用mklink的批处理代码,我学了半知半解,现在又想学习用shortcut的方法创建,根据shortcut的方法把原批处理照样画葫芦改了一下,正常运行创建目录及文件,但是目标上的快捷方式好像不完整,点击无反应,属性没显示是快捷方式,哪位老师能帮我分析一下,哪里画错了需要改进一下,全程代码如下:
  1. @echo off
  2. REM Admin
  3. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  4. REM search drivers
  5. set "drivers=C D E F G H I J K L M N O P Q R S T U V W"
  6. REM exe foldername
  7. set "exeFolderName=集群工具包"
  8. REM main foldername
  9. set "linkFolderName1=%USERPROFILE%\desktop"
  10. set "linkFolderName2=%ProgramData%\Microsoft\Windows\Start Menu\Programs"
  11. REM esp exe
  12. set "espExe=\磁盘软件\BOOTICE.exe?\图片工具\小型截图软件.exe?\镜像软件\UltraISO.exe?\播放器\PotPlayer.exe?\数据恢复\数据恢复.exe"
  13. REM start
  14. for %%i in (%drivers%) do if exist "%%i:" (
  15.         set /p="check:%%i:\%exeFolderName%   "<nul
  16.         if exist "%%i:\%exeFolderName%" (
  17.                 echo OK!
  18.                 set "folder=%%i:\%exeFolderName%"
  19.                 goto :done
  20.         ) else echo not found!
  21. )
  22. echo -------------
  23. for %%i in (%drivers%) do (
  24.         cd /d "%%i:" 2>nul && (
  25.                 echo search %%i: please wait...
  26.                 for /r /d %%a in ("*") do (
  27.                         if "%%~na" equ "%exeFolderName%" (
  28.                                 set "folder=%%~a"
  29.                                 goto :done
  30.                         )
  31.                 )
  32.         )
  33. )
  34. :done
  35. if "%folder%"=="" echo %exeFolderName% not found! & pause&exit
  36. echo -------------
  37. echo "folder=%folder%"
  38. echo -------------
  39. for /r "%folder%" %%i in ("*.exe") do (
  40.         echo mklink: %%~i
  41.         call set "exe=%%~i"
  42.         call echo %espExe% | call findstr /i /C:"%%exe:%folder%\=%%" >nul 2>nul && (
  43.                 call echo add %userprofile%\desktop
  44.                 shortcut /f:"%userprofile%\desktop\%%~ni" /a:c /t:"%%~i" >nul              
  45.         )
  46.         for /f "tokens=2 delims==" %%a in ('set linkFolderName') do (
  47.                 call set "link=%%a\%exeFolderName%\%%exe:%folder%\=%%"
  48.                 call mkdir "%%link:%%~nxi=%%" >nul 2>nul
  49.                 call shortcut /f:"%%link:~0,-4%%" /a:c /t:"%%~i" >nul       
  50.         )
  51. )
  52. pause&exit
复制代码
发表于 2020-5-9 10:52:20 | 显示全部楼层
本帖最后由 smss 于 2020-5-9 10:54 编辑

PE中调用PECMD把脚本放入处置工具目录文件夹中
PECMD.ini直接调用显而易见更快方便
BAT版
  1. for /f  "delims=*" %%i in ('dir /a-d/b/s .\*.exe') do  PECMD link %userprofile%\desktop\%%~ni,%%~fi
复制代码
PECMD版
  1. FORX /S %CurDir%\*,&&f,,
  2. {
  3. FNAM &&s=%&f%
  4. FEXT &&u=%&f%
  5. IFEX %&f%\,! FIND $%&s%<>, FIND $%&u%=exe, LINK %Desktop%\%s%,%&f%
  6. }
复制代码
 楼主| 发表于 2020-5-9 12:58:49 | 显示全部楼层
本帖最后由 大地 于 2020-5-9 13:15 编辑

回复 2# smss

我想学一下批处理快捷方式
发表于 2020-5-9 13:11:33 | 显示全部楼层
PE里面我记得有个文件直接配置快捷方式,似乎是个inf
发表于 2020-5-10 09:19:43 | 显示全部楼层
要加上.lnk后缀
  1. call shortcut /f:"%%link:~0,-4%%.lnk" /a:c /t:"%%~i"
复制代码
用的这个http://www.bathome.net/viewthread.php?tid=4019&highlight=shortcut%2B
 楼主| 发表于 2020-5-10 11:01:24 | 显示全部楼层
回复 5# went

还是大师厉害,针对性切中要害,解决问题,再次表示感谢。
剩下的是我慢慢理解和学习代码的含义了,特别for是语句。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 18:12 , Processed in 0.018667 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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