[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 大地 于 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
复制代码

回复 5# went

还是大师厉害,针对性切中要害,解决问题,再次表示感谢。
剩下的是我慢慢理解和学习代码的含义了,特别for是语句。

TOP

要加上.lnk后缀
  1. call shortcut /f:"%%link:~0,-4%%.lnk" /a:c /t:"%%~i"
复制代码
用的这个http://www.bathome.net/viewthread.php?tid=4019&highlight=shortcut%2B

TOP

PE里面我记得有个文件直接配置快捷方式,似乎是个inf

TOP

本帖最后由 大地 于 2020-5-9 13:15 编辑

回复 2# smss

我想学一下批处理快捷方式

TOP

本帖最后由 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. }
复制代码

TOP

返回列表