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

[其他] [已解决]求EXE程序批量创建快捷方式到指定文件夹并一一对应

本帖最后由 大地 于 2020-4-28 08:08 编辑

求EXE程序批量创建快捷方式到指定文件夹并一一对应

重新整理一下

源:                                                    →→→目标:
     工具目录包TOOLS1112222及内EXE →→→    ①PE桌面  工具目录包TOOLS1112222及内部快捷方式
      (任意位置,
      当然在分区根目录寻找很快)                           ②所有程序:工具目录包TOOLS1112222及内部快捷方式
                                               
                                                                       ③自定义某几个快捷方式至PE桌面
                                                                           例:DG.exe,nap.exe,QQ.exe

         源文件夹与目标新文件夹一一对应
         源文件夹下的EXE与目标新文件夹下的EXE的快捷方式所在位置一一对应


    经反复实践测试:无缝创建完美运行,再次感谢went的多次、耐心、无私奉献。


    完整代码至本贴末尾见went发布的。


(由于精简系统缺少组件等原因,运行本代码会遇到“设备不支持符号链接“时,需要补全DLL文件才行)

回复 24# 大地

这是第三方工具,具体没用过

TOP

回复 23# went

大师:
这个版本很好,很实用,很方便,就是能不能用Shortcut.exe替换mklink,一个是mklink版本,一个是shortcut版本,多一个版本,多一个选择。相互取长补短,适应不同的环境,不同的系统。

TOP

本帖最后由 went 于 2020-4-26 09:48 编辑

ANSI保存,再不行我也没招了
  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 X Y Z"
  6. REM exe foldername
  7. set "exeFolderName=TOOLS1112222"
  8. REM main foldername
  9. set "linkFolderName1=C:\Users\lenovo\Desktop\1"
  10. set "linkFolderName2=C:\Users\lenovo\Desktop\2"
  11. REM esp exe
  12. set "espExe=\分区工具\DG.exe?\截图工具\nap.exe?\其它\QQ.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. mklink "%userprofile%\desktop\%%~ni" "%%~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 mklink "%%link:~0,-4%%" "%%~i" >nul
  50. )
  51. )
  52. pause&exit
复制代码

TOP

本帖最后由 大地 于 2020-4-25 18:57 编辑

回复 21# went



按ANSI保存不能运行无反应
按UTF-8保存,能运行,但显示在C盘根目录找不到,但实际在C盘根目录上有该文件夹
按BOM的UTF-8保存,运行一直滚动不停止
上述操作在完整版的WIN10中试也不行

TOP

回复 20# 大地


    ANSI编码

TOP

回复 19# went


老师  加入上面的两个代码 运行闪屏不反应,  没有加入上面两个代码时仍运行正常

TOP

回复 18# 大地
16楼代码
10行下面加上以下代码,这是特殊exe的相对路径,?分隔
  1. REM esp exe
  2. set "espExe=\分区工具\DG.exe?\截图工具\nap.exe?\其它\QQ.exe?\新建文件夹\handle64.exe?\新建文件夹\CPU-V.exe"
复制代码
39行下面加上以下代码
  1. call echo %espExe% | call findstr /i /C:"%%exe:%folder%\=%%" >nul 2>nul && (
  2. call echo add %userprofile%\desktop
  3. mklink "%userprofile%\desktop\%%~ni" "%%~i" >nul
  4. )
复制代码
ANSI保存

TOP

回复 16# went


  从搜索到的TOOLS1112222的文件夹的EXE发送快捷方式至 "桌面" 和 "所有程序" 后,我还想
  从TOOLS1112222这个总文件夹中 挑选 其中三个特定的文件的快捷方式到桌面上

  TOOLS1112222\分区工具\DG.exe
                         \截图工具\nap.exe
                               \其它\QQ.exe
                                 ................

该如何添加?

大神再帮我解决一下吧  再次感谢!!

TOP

本帖最后由 大地 于 2020-4-23 11:14 编辑

回复 16# went

大神  :

  从搜索到的TOOLS1112222的文件夹的EXE发送快捷方式至 "桌面" 和 "所有程序" 后,我还想
  从TOOLS1112222这个总文件夹中 挑选 其中三个特定的文件的快捷方式到桌面上

  TOOLS1112222\分区工具\DG.exe
                         \截图工具\nap.exe
                               \其它\QQ.exe
                                 ................

该如何添加?

TOP

文件夹按照9-10行的格式添加
set "linkFolderName序号=路径"
  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 X Y Z"
  6. REM exe foldername
  7. set "exeFolderName=TOOLS1112222"
  8. REM main foldername
  9. set "linkFolderName1=C:\Users\lenovo\Desktop\1"
  10. set "linkFolderName2=C:\Users\lenovo\Desktop\2"
  11. REM start
  12. for %%i in (%drivers%) do if exist "%%i:\" (
  13. set /p="check:%%i:\%exeFolderName%   "<nul
  14. if exist "%%i:\%exeFolderName%" (
  15. echo OK!
  16. set "folder=%%i:\%exeFolderName%"
  17. goto :done
  18. ) else echo not found!
  19. )
  20. echo -------------
  21. for %%i in (%drivers%) do (
  22. cd /d "%%i:\" 2>nul && (
  23. echo search %%i: please wait...
  24. for /r /d %%a in ("*") do (
  25. if "%%~na" equ "%exeFolderName%" (
  26. set "folder=%%~a"
  27. goto :done
  28. )
  29. )
  30. )
  31. )
  32. :done
  33. if "%folder%"=="" echo %exeFolderName% not found! & pause&exit
  34. echo -------------
  35. echo "folder=%folder%"
  36. echo -------------
  37. for /r "%folder%" %%i in ("*.exe") do (
  38. echo mklink: %%~i
  39. call set "exe=%%~i"
  40. for /f "tokens=2 delims==" %%a in ('set linkFolderName') do (
  41. call set "link=%%a\%exeFolderName%\%%exe:%folder%\=%%"
  42. call mkdir "%%link:%%~nxi=%%" >nul 2>nul
  43. call mklink "%%link:~0,-4%%" "%%~i" >nul
  44. )
  45. )
  46. pause&exit
复制代码

TOP

本帖最后由 大地 于 2020-4-20 21:21 编辑

回复 13# went


大师  再次让你见笑了 没完没了 哈哈

在多个实体硬盘、U盘上的目录间任意传送,完美运行,但在实体盘上目录传送到内存系统(PE或ramos)的目录上,显示不支付该设备连接,无法创建。
经反复检查 最后搞清楚是系统问题,与大神代码无关, 大神代码可以完美运行,再次表示感谢。

1、我想一次两用,传送到桌面的同时,也同时发送到所有程序里面。当然可以运行两次,但我想简洁一点。如何修改?

大神 谢谢了。

TOP

本帖最后由 大地 于 2020-4-20 21:19 编辑

回复 13# went

大师  再次让你见笑了 没完没了 哈哈

在多个实体硬盘、U盘上的目录间任意传送,完美运行,但在实体盘上目录传送到内存系统(PE或ramos)的目录上,显示不支付该设备连接,无法创建。
经反复检查 最后搞清楚是系统问题,与大神代码无关, 大神代码可以完美运行,再次表示感谢。

1、我想一次两用,传送到桌面的同时,也同时发送到所有程序里面。当然可以运行两次,但我想简洁一点。如何修改?

大神 谢谢了。

TOP

权限问题
  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 X Y Z"
  6. REM exe foldername
  7. set "exeFolderName=TOOLS1112222"
  8. REM main foldername
  9. set "linkFolderName=C:\ProgramData"
  10. REM start
  11. for %%i in (%drivers%) do if exist "%%i:\" (
  12. set /p="check:%%i:\%exeFolderName%   "<nul
  13. if exist "%%i:\%exeFolderName%" (
  14. echo OK!
  15. set "folder=%%i:\%exeFolderName%"
  16. goto :done
  17. ) else echo not found!
  18. )
  19. echo -------------
  20. for %%i in (%drivers%) do (
  21. cd /d "%%i:\" 2>nul && (
  22. echo search %%i: please wait...
  23. for /r /d %%a in ("*") do (
  24. if "%%~na" equ "%exeFolderName%" (
  25. set "folder=%%~a"
  26. goto :done
  27. )
  28. )
  29. )
  30. )
  31. :done
  32. if "%folder%"=="" echo %exeFolderName% not found! & pause&exit
  33. echo -------------
  34. echo "folder=%folder%"
  35. echo -------------
  36. for /r "%folder%" %%i in ("*.exe") do (
  37. echo mklink: %%~i
  38. call set "exe=%%~i"
  39. call set "link=%linkFolderName%\%exeFolderName%\%%exe:%folder%\=%%"
  40. call mkdir "%%link:%%~nxi=%%" >nul 2>nul
  41. call mklink "%%link:~0,-4%%" "%%~i" >nul
  42. )
  43. pause&exit
复制代码

TOP

本帖最后由 大地 于 2020-4-18 11:49 编辑

回复 11# went


大师 让你见笑了 还是有两个问题要向你请教:

1、上面代码运行时  出现个别目录无法创建快捷方式,不知是权限问题还是其它问题
      后我用  xcopy **** /e/t 先复制空目录  再用上面的代码 就完整创建所有的快捷方式,
     我自个想加个xcopy  可不知道放哪个位置 一直没搞定

2、  第26行后加入    call set "tag=X:\ProgramData\Microsoft\Windows\Start Menu\Programs\%folderName%%%exe:%folder%=%%"
     显示运行错误  该如何修改加入?

     再次麻烦大师

TOP

返回列表