[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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文件才行)

  1. @echo off
  2. REM exe folder
  3. set "dir=C:\Users\lenovo\Desktop\0"
  4. REM mklink
  5. for /r "%dir%" %%i in ("*.exe") do mklink "%userprofile%\desktop\%%~ni" "%%~i"
  6. pause&exit
复制代码

TOP

大神 我试了一下没成功啊  能不能抽空邦我查一下原因吗 谢谢

1、这个A文件夹不固定在哪里  还要寻找一下才行
2、还可能有子目录下的EXE  

你的代码我试了 没反应 还有你的 “lenovo” 是什么没理解  
通常是 set "dir=C:\Users\Default\Desktop\0"

TOP

本帖最后由 went 于 2020-4-15 20:57 编辑

回复 3# 大地


    你要说明你的A文件夹根据什么特征去搜索,整个硬盘又不是只有一个A文件夹
    或者你搜索到A文件夹然后吧楼上的dir修改为你的A文件夹路径

TOP

回复 4# went

大师  上面代码是正确的  刚才是我操作不正确

就是想能不能更新一下

1、这个 “A”文件夹 可能在 C盘 可能在D盘,可能在E盘…………
   没绝对路径, 能否更新一下
   (不论何种扫描 只要找到该文件夹就行)

2、能否对每个EXE再带个图标显示 *.ico

TOP

回复 5# 大地


    你就只给一个文件夹名怎么去定位?
    搜索到多个同名文件夹怎么确定那个是你需要的

TOP

本帖最后由 大地 于 2020-4-16 15:26 编辑

回复 6# went

大师  应该我说得不清楚,重新理一遍

我是想这样操作:

假设  C盘上有这个文件夹   TOOLS1112222    (没有重名,整个电脑仅为此一个文件夹)
         这个文件夹有时在D盘  有时在E盘 不确定....不过应该都在分区根目录
         这个TOOLS1112222文件夹有子目录

         我想在PE系统的桌面上有这个  TOOLS1112222 空文件夹    把 源TOOLS1112222  里面的EXE执行文件生成的全部快捷方式复制过来到PE,并且按不同的文件夹及子目录分别一一对应存放,同时也补全各级文件夹及目录,

简单说     源文件夹有EXE     目标文件夹为快捷方式,各级一一对应

麻烦大师 再帮我写一个吧  谢谢

TOP

本帖最后由 went 于 2020-4-16 16:47 编辑

回复 7# 大地

drivers最好别添加系统盘符,不然查找起来很慢
  1. @echo off
  2. REM search drivers
  3. set "drivers=D E F G H I J K L M N O P Q R S T U V W X Y Z"
  4. REM exe foldername
  5. set "folderName=TOOLS1112222"
  6. REM start
  7. for %%i in (%drivers%) do (
  8. cd /d "%%i:\" 2>nul && (
  9. echo search %%i: please wait...
  10. for /r /d %%a in ("*") do (
  11. if "%%~na" equ "%folderName%" (
  12. set "folder=%%~a"
  13. goto :done
  14. )
  15. )
  16. )
  17. )
  18. :done
  19. if "%folder%"=="" echo %folderName% not found! & pause&exit
  20. echo -------------
  21. echo "folder=%folder%"
  22. echo -------------
  23. for /r "%folder%" %%i in ("*.exe") do (
  24. echo mklink: %%~i
  25. call set "exe=%%~i"
  26. call set "tag=%USERPROFILE%\desktop\%folderName%%%exe:%folder%=%%"
  27. call mkdir %%tag:%%~nxi=%% >nul 2>nul
  28. call mklink "%%tag:~0,-4%%" "%%~i" >nul
  29. )
  30. pause&exit
复制代码

TOP

回复 8# went

谢谢大师  成功了  大师很厉害,代码这么长我都看不懂,我要好好慢慢地去研究学习这些代码   为大师赞一个

TOP

回复 8# went


大神  空的时候能不能再帮我优化一下:

1、TOOLS1112222通常放在 盘符根目录

   程序优先搜索  C盘根目录   没有再搜索D盘根目录    再搜索E盘根目录     再搜索F盘根目录
    再搜索G盘根目录,   就这五个, 如果实在没有搜索到, 再用上面的代码进行深层搜索,
    这样大大加快运行速度
   (因为TOOLS1112222通常放在 盘符根目录,大多数情况电脑一般分5个区最多了)

2、上面代码运行时  出现个别目录无法创建快捷方式,不知是权限问题还是其它问题
      后我用  xcopy **** /e/t 先复制空目录  再用上面的代码 就完整创建所有的快捷方式,

    再次谢谢!!

TOP

回复 10# 大地

手机写未测试
第六行下面插入一行
  1. for %%i in (%drivers%) do if exist "%%i:\%folderName%" set "folder=%%i:\%folderName%" && goto :done
复制代码

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

权限问题
  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-20 21:19 编辑

回复 13# went

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

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

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

大神 谢谢了。

TOP

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

回复 13# went


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

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

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

大神 谢谢了。

TOP

返回列表