无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9693|回复: 69
打印 上一主题 下一主题

求为大量绿色软件建立桌面快捷方式的批处理(已解决)

[复制链接]
跳转到指定楼层
1#
发表于 2012-4-9 13:32:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
白天用公司电脑,晚上用家里电脑,有时用朋友家电脑,但软件、资料和记录之类的无法保持一致相当不爽,所以现在改用绿色版存在移动硬盘上,差不多有100个左右吧,但每次要用需要进入无数个文件夹里打开这些软件或在新机、还原系统后建立桌面快捷方式是件头痛的事,所以求大侠帮我弄个建立桌面快捷方式的批处理的样本



条件1:批处理是放在移动硬盘根目录里运行
条件2:移动硬盘里的软件路径(注意不是单文件的):

            飞信是\PETOOLS\Fetion\Fetion.exe                 快捷方式名称是“飞信”
              QQ是\PETOOLS\QQ\QQ.exe                            快捷方式名称是"QQ"
              Foxmail是\PETOOLS\Foxmail\Foxmail.EXE   快捷方式名称是"Foxmail"
              迅雷是\PETOOLS\Thunder\Thunder.exe       快捷方式名称是"迅雷"

上面路径我没有写盘符,创建快捷方式时,需要由批处理自己判断盘符,快捷方式名称尽量做到可以自定义。

条件3:XP、WIN7 32/64下都能用(也会在PE3.0下用,不过那个可以在PE里搞掂)



2011mking、monitor20大侠的方案完全实现了我的愿望,非常感谢各位大哥的热心帮助,特别是2011mking、monitor20大侠,非常感谢!

[ 本帖最后由 极度凶残 于 2012-4-10 14:34 编辑 ]
2#
发表于 2012-4-9 13:59:26 | 只看该作者
这个有难度 请高手来解答!
回复

使用道具 举报

3#
 楼主| 发表于 2012-4-9 14:15:15 | 只看该作者
原帖由 2010我你928 于 2012-4-9 13:59 发表
这个有难度 请高手来解答!

呵呵!在线坐等高手...
回复

使用道具 举报

4#
发表于 2012-4-9 14:28:09 | 只看该作者
P,俺不会

其它办法可能行

把移动硬盘插上, 假定盘符是K

建一个目录,如KJ, 把所有软件创建一次快捷方式,然后,都复制到KJ目录.

同理, 创建A--Z 全部盘符的快捷方式, 目录分别为AJ,BJ,CJ, 以后,插上移动硬盘,根据盘符,
打开对应目录,里面就可以直接执行了.

或者, 重建一个固定的盘符,如Z,W,V 这样,基本用不到的盘符,创建一次,
移动硬盘使用时,更改盘符为Z,W,V
回复

使用道具 举报

5#
发表于 2012-4-9 14:29:30 | 只看该作者
放桌面,对应目录的,拖到桌面即可
回复

使用道具 举报

6#
发表于 2012-4-9 14:40:32 | 只看该作者
这个难度不小
1:\Program Files 能确保只有1个吗?有多个是如何你想用哪一个,难道要搜出来先选择一下?
2:是为\Program Files  下的的目录中各个Exe并不一定都是你需要的,比如Uninstall.exe等,自动搜估计全出来了。
如果只针对某几个地方用,你可以建好快捷方式,Rar打包成自解压呀,这样你可以选择 办公室.exe,家.exe,解出来恢复可能更有针对性。
回复

使用道具 举报

7#
发表于 2012-4-9 14:45:35 | 只看该作者
为何不使用 PStart 之类的软件?支持相对路径。快捷方式只要手动建立一次,到处都可以用了。
回复

使用道具 举报

8#
发表于 2012-4-9 14:50:15 | 只看该作者
使用HTML手动LINK快捷Key
回复

使用道具 举报

9#
 楼主| 发表于 2012-4-9 14:50:59 | 只看该作者
原帖由 2011mking 于 2012-4-9 14:40 发表
这个难度不小
1:\Program Files 能确保只有1个吗?有多个是如何你想用哪一个,难道要搜出来先选择一下?
2:是为\Program Files  下的的目录中各个Exe并不一定都是你需要的,比如Uninstall.exe等,自动搜估计 ...

1.Program Files 文件夹可以改其它名的,现在需要批处理判断自己是在哪个盘,并用变量符来代表盘符不行吗?  那PE里为什么就可以?
2.我可以像PE里那样每个软件一条条添加

LINK %Desktop%\QQ,%CurDrv%\PETOOLS\Comm\QQ2010.exe
LINK %Desktop%\Opera,%CurDrv%\PETOOLS\Comm\Opera.exe
LINK %Desktop%\FEIQ,%CurDrv%\PETOOLS\Comm\FEIQ.EXE
LINK %Desktop%\Thunder,%CurDrv%\PETOOLS\Comm\Thunder.exe
LINK %Desktop%\Fetion,%CurDrv%\PETOOLS\Comm\飞信2010.EXE
LINK %Desktop%\Microsoft Word 2010,%CurDrv%\PETOOLS\Comm\Word.EXE
LINK %Desktop%\Microsoft Excel 2010,%CurDrv%\PETOOLS\Comm\Excel.EXE
LINK %Desktop%\数据恢复Power Data Recovery,%CurDrv%\PETOOLS\Comm\数据恢复Power Data Recovery.EXE
LINK %Desktop%\数据恢复RECUVA 1.37,%CurDrv%\PETOOLS\Comm\数据恢复RECUVA 1.37.EXE
LINK %Desktop%\64Bit系统安装工具,%CurDrv%\PETOOLS\Comm\64Bit系统安装工具.EXE
LINK %Desktop%\LANSEEV,%CurDrv%\PETOOLS\Comm\LANSEEV.EXE
LINK %Desktop%\Easy Duplicate,%CurDrv%\PETOOLS\Comm\EasyDuplicate.EXE
LINK %Desktop%\FileZilla FTP Client,%CurDrv%\PETOOLS\Comm\FileZillaFTP.EXE
LINK %Desktop%\Smart Rename,%CurDrv%\PETOOLS\Comm\SmartRename.EXE
LINK %Desktop%\FlashFxp,%CurDrv%\PETOOLS\Comm\FLASHFXP.EXE
LINK %Desktop%\AliIM,%CurDrv%\PETOOLS\Comm\阿里旺旺2010.EXE

[ 本帖最后由 极度凶残 于 2012-4-9 15:00 编辑 ]
回复

使用道具 举报

10#
发表于 2012-4-9 14:54:36 | 只看该作者
百草霜的批处理自己改一改或许可以实现。。。
http://bbs.wuyou.net/forum.php?m ... 4048&highlight=
回复

使用道具 举报

11#
 楼主| 发表于 2012-4-9 14:55:32 | 只看该作者
原帖由 dvd008 于 2012-4-9 14:28 发表
P,俺不会

其它办法可能行

把移动硬盘插上, 假定盘符是K

建一个目录,如KJ, 把所有软件创建一次快捷方式,然后,都复制到KJ目录.

同理, 创建A--Z 全部盘符的快捷方式, 目录分别为AJ,BJ,CJ, 以后,插上移 ...

PE里那个搜索外置软件并创建快捷方式又是怎么实现的?那个U盘盘符一样是不固定的
回复

使用道具 举报

12#
发表于 2012-4-9 14:57:30 | 只看该作者
<a href="./Program Files/QQ/QQ.exe ">QQ</a>
回复

使用道具 举报

13#
发表于 2012-4-9 15:03:08 | 只看该作者
原帖由 极度凶残 于 2012-4-9 14:50 发表

1.Program Files 文件夹可以改其它名的,现在需要批处理判断自己是在哪个盘,并用变量符来代表盘符不行吗?  那PE里为什么就可以?
2.我可以像PE里那样每个软件一条条添加

LINK %Desktop%\QQ,%CurDrv%\PE ...


不是说不可以,而是你那个目录 Program Files 太常见了,比如说装多系统或者用软件转移过Program Files,就可能出现多个Program Files,你想用哪一个呢?

另外,直接搜是可以搜出Program Files下的所有exe,但这些exe你都需要建快捷方式吗,比如Uninstall.exe或者QQ目录下,也有好几个exe,自动的是全出来,你一条一条的加当然不会出来的。
回复

使用道具 举报

14#
 楼主| 发表于 2012-4-9 15:03:11 | 只看该作者
原帖由 2012ady 于 2012-4-9 14:57 发表
QQ

看不懂,我需要一个有上面说的4个软件的完整的批处理文件,其它软件我再照虎画猫一个个添加
回复

使用道具 举报

15#
 楼主| 发表于 2012-4-9 15:09:15 | 只看该作者
原帖由 2011mking 于 2012-4-9 15:03 发表


不是说不可以,而是你那个目录 Program Files 太常见了,比如说装多系统或者用软件转移过Program Files,就可能出现多个Program Files,你想用哪一个呢?

另外,直接搜是可以搜出Program Files下的所有e ...

那Program Files就改为TOOLS咯,我不需要批处理搜索里面的所有EXE文件,我只需要像PE那样判断盘符后,用路径一个个添加
像玄大PE外置也是一个个添加:
ENVI $extpath=%CurDir%                                      //将外置路径放入系统变量
LOAD Comm.ini

LINK %Desktop%\QQ,%CurDrv%\PETOOLS\Comm\QQ2010.exe
LINK %Desktop%\Opera,%CurDrv%\PETOOLS\Comm\Opera.exe
LINK %Desktop%\FEIQ,%CurDrv%\PETOOLS\Comm\FEIQ.EXE
LINK %Desktop%\Thunder,%CurDrv%\PETOOLS\Comm\Thunder.exe
LINK %Desktop%\Fetion,%CurDrv%\PETOOLS\Comm\飞信2010.EXE
回复

使用道具 举报

16#
发表于 2012-4-9 15:15:33 | 只看该作者
CMD:pecmd.exe LOAD \PETOOLS\WINPE.INI

WINPE.INI:内容如下. WINPE.INI放在PETOOL目录下
_SUB Outer_Reload
        ENVI Programs=%USERPROFILE%\「开始」菜单\程序
        ENVI Desktop=%USERPROFILE%\桌面
        ENVI QuickLaunch=%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
_END
FIND Explorer.EXE,CALL Outer_Reload
ENVI CurDir=%CurDrv%\PETOOLS

LINK %Programs%\PE安装修改,%CurDir%\PE安装修改
LINK %Programs%\磁盘光盘,%CurDir%\磁盘光盘
LINK %Programs%\克隆工具,%CurDir%\克隆工具
LINK %Programs%\启动声显卡,%CurDir%\启动声显卡
LINK %Programs%\启动网卡,%CurDir%\启动网卡
LINK %Programs%\图片影音,%CurDir%\图片影音
LINK %Programs%\系统检测,%CurDir%\系统检测
LINK %Programs%\系统维护,%CurDir%\系统维护
LINK %Programs%\修复安装,%CurDir%\修复安装
LINK %Programs%\文字处理,%CurDir%\文字处理
LINK %Programs%\需MMC支持,%CurDir%\需MMC支持
LINK %Programs%\增强MMC,%CurDir%\增强MMC.EXE
LINK %Programs%\内存系统,%CurDir%\内存系统
LINK %Programs%\常用软件,%CurDir%\常用软件
回复

使用道具 举报

17#
发表于 2012-4-9 15:16:58 | 只看该作者
Program Files 等,放在PETOOL目录下

目录结构:PETOOL----常用软件,磁盘工具,....,都放PETOOL目录下

[ 本帖最后由 dvd008 于 2012-4-9 15:18 编辑 ]
回复

使用道具 举报

18#
 楼主| 发表于 2012-4-9 15:19:54 | 只看该作者
原帖由 dvd008 于 2012-4-9 15:16 发表
Program Files 等,放在PETOOL目录下

目录结构:PETOOL----常用软件,磁盘工具,....,都放PETOOL目录下

在PE里是这样用,但正常系统里不行啊
回复

使用道具 举报

19#
发表于 2012-4-9 16:49:01 | 只看该作者
用两个批处理来解决,设启动后移动硬盘盘符是 x:

X:下放 makeit.cmd 与 创建Tools下快捷方式.cmd ,Tools目录下放软件

makeit.cmd (这是创建快捷方式的子调用,直接用无用)
-----------------------------------------------------
@echo off
set path=%1
:::注意,有的系统不是\桌面\,而是 \desktop\,按要求替换就成
set topath="%USERPROFILE%\桌面\%~2.Url"
echo [InternetShortcut] >> %topath%
echo URL="%path%" >> %topath%
echo IconIndex=0 >> %topath%
echo IconFile=%path% >> %topath%
--------------------------------------------------------

创建Tools下快捷方式.cmd
-------------------------------
@echo off
PUSHD %~dp0
makeit "%CD%\tools\QQ\QQ.exe" "腾迅QQ"
makeit "%CD%\tools\Fetion\Fetion.exe" "飞信Fetion"
makeit "%CD%\tools\Thunder\Thunder.exe" "迅雷下载"
makeit "%CD%\tools\Foxmail\Foxmail.exe" "邮件Foxmail"
Rem ....其他按上面的方式加就可以了
回复

使用道具 举报

20#
发表于 2012-4-9 16:51:13 | 只看该作者
  1. @echo off&setlocal enabledelayedexpansion
  2. pushd "%~dp0"
  3. for /f "delims=" %%a in ('dir /b /s "TOOLS\*.exe"') do (
  4.   set "name=%%~na"
  5.   if /i "!name!"=="Fetion" (set "name=飞信"
  6.     ) else if /i "!name!"=="Thunder" set "name=迅雷"
  7.   (echo [InternetShortcut]
  8.   echo URL="%%a"
  9.   echo IconFile="%%a"
  10.   echo HotKey=0
  11.   echo IconIndex=0
  12.   echo IDList=)>"%USERPROFILE%\桌面\!name!.url"
  13. )
复制代码

放U盘根目录下,试试看吧。Win7将"%USERPROFILE%\桌面\"改成"%USERPROFILE%\desktop\"
桌面url快捷方式,非lnk快捷方式
回复

使用道具 举报

21#
发表于 2012-4-9 17:02:44 | 只看该作者
我记得PE下有个“搜索PETOOLS”的工具,水大的PE里有的,你试试
回复

使用道具 举报

22#
发表于 2012-4-9 17:04:27 | 只看该作者
回复

使用道具 举报

23#
发表于 2012-4-9 19:19:46 | 只看该作者
我平时就复制快捷方式那样处理
回复

使用道具 举报

24#
发表于 2012-4-9 21:01:05 | 只看该作者
原帖由 2011mking 于 2012-4-9 16:49 发表
用两个批处理来解决,设启动后移动硬盘盘符是 x:

X:下放 makeit.cmd 与 创建Tools下快捷方式.cmd ,Tools目录下放软件

makeit.cmd (这是创建快捷方式的子调用,直接用无用)
---------------------------- ...

楼主试试这个批处理.

PE里是由PECMD来解释LINK命令.
正常系统下没有LINK命令.
回复

使用道具 举报

25#
发表于 2012-4-9 22:29:43 | 只看该作者
为什么要这么麻烦呢?先用subst 影射一个目录为指定盘符,再copy事先准备好的快捷方式连接到桌面不一完了?
给个简单的例子
  1. @echo off
  2. subst z: "Program Files" >nul
  3. ping 127.1 -n 3 >nul
  4. copy z:\shortcut\* "%userprofile%\桌面"
  5. pause
复制代码
如果系统语言不一样的话,自己加一个判断就行了。
注:subst 为windows系统内置命令,不需要其他软件一可以操作了。
再说下操作方法:
先用subst 创建好你要的盘符 再从那盘符里找到你的绿色软件创建快捷方式到桌面,再复制桌面的快捷方式出来放到shortcut目录下,这样在别的机器运行这个批处理一OK了。

测试环境:windows XP -windows 7 非PE环境

祝你如愿。

个人感觉完整点带点简单判断的代码:
  1. @echo off
  2. if exist z: subst z: /d
  3. subst z: "Program Files" >nul
  4. ping 127.1 -n 3 >nul
  5. if exist "%userprofile%\desktop" (copy z:\shortcut\* "%userprofile%\desktop" >nul) else copy z:\shortcut\* "%userprofile%\桌面" >nul
  6. pause
复制代码

[ 本帖最后由 kingshui 于 2012-4-9 23:22 编辑 ]
回复

使用道具 举报

26#
发表于 2012-4-9 22:42:05 | 只看该作者
会编程的话,直接用稍微高级一点的语言写一个吧,感觉可能比批处理还容易。。。

思路如下:

1)程序开始出来一个下拉式菜单,列出所有移动硬盘,然后选需要用的盘

2)程序搜索盘里所有exe文件,建一个快捷方式到桌面,exe文件太多的话,放到桌面一个指定的文件夹里

稍微理想一点,可以编辑一个常用列表,只有与列表同名的exe才建立快捷方式

另外如果是直接从移动硬盘里运行的话,可以忽略1),因为程序知道自己在哪个盘里面运行,直接搜索当前硬盘就行了
回复

使用道具 举报

27#
发表于 2012-4-9 22:56:50 | 只看该作者
这个好办,将chenall的那个工具改一下就可以了,将以下代码存成一个批处理,将它和PECMD.EXE文件放到工具所在的盘或目录,用时运行它就可以了,已经测试通过:
  1. ::搜索当前目录下所有程序并建立快捷方式 by chenall modify by h3
  2. @echo off
  3. PUSHD %~dp0
  4. SET "BASE_DIR=%CD%"
  5. POPD
  6. if not defined StartMenu SET "StartMenu=%USERPROFILE%\「开始」菜单"
  7. if not exist %systemroot%\System32\pecmd.exe copy pecmd.exe %systemroot%\System32
  8. if "%~1"=="merge" goto :merge
  9. SET "外置程序=外置程序_%base_dir:~0,1%盘"
  10. SET "外置程序=%StartMenu%\%外置程序::=%"
  11. SET "_TF=%WinDir%\T_PETOOLS_%base_dir:~0,1%_"
  12. IF EXIST "%外置程序%" RD /S /Q "%外置程序%" 2>nul
  13. :START
  14. DEL "%_TF%*.*" 2>nul
  15. PUSHD "%base_dir%"
  16. >%_TF%LST.lst dir /s/a/b *.wim *.cmd *.bat *.exe
  17. POPD
  18. PUSHD "%WinDir%"
  19. for /f "usebackq delims=" %%i in (%_TF%LST.lst) do CALL :MAKE_LINK "%%i"
  20. ECHO.EXEC !%~F0 merge "%外置程序%" >>%_TF%LNK.INI
  21. ECHO.FILE %_TF%LNK.INI>>%_TF%LNK.INI
  22. START PECMD LOAD %_TF%LNK.INI
  23. DEL %_TF%*.lst
  24. POPD
  25. goto :eof
  26. :MAKE_LINK
  27. SETLOCAL
  28. if "%~1"=="" goto :eof
  29. if /i "%~n1"=="setup" (
  30. echo.%1 >>"%_TF%SETUP.LST"
  31. goto :eof
  32. )
  33. SET ".=%~1"
  34. SET ".=%.:&=^&%"
  35. SET "PETOOLS=%~dpn1"
  36. call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
  37. SET "PETOOLS=%PETOOLS:&=^&%"
  38. echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
  39. GOTO :EOF
  40. :merge
  41. PUSHD %2||GOTO :EOF
  42. for /d %%i in ("%~2\*") do call :merge_lnk "%%i"
  43. POPD
  44. goto :eof
  45. :merge_lnk
  46. CD /D %1||GOTO :EOF
  47. for /d %%i in ("%~f1\*") do call %0 "%%i"
  48. CD /D %1||GOTO :EOF
  49. set n=
  50. for /f %%i in ('dir /a/b') do (
  51.     if defined n goto :eof
  52.     set n=1
  53. )
  54. for /f "usebackq delims=" %%i in (`dir /a/b`) do move /y "%%i" ..\
  55. cd..&&rd %1
  56. goto :eof
复制代码


当然,如果不用pecmd.exe用nircmd.exe也是可以的,功能更强大。

[ 本帖最后由 hhh333 于 2012-4-9 22:59 编辑 ]
回复

使用道具 举报

28#
发表于 2012-4-9 23:01:18 | 只看该作者
抽时间给你用AutoIt3写一个程序,读取程序目录下的配置文件来创建快捷方式到桌面或开始菜单,代码很简单,AutoIt3有专门表示各种路径的宏及丰富的函数……完成这些不成问题!配置文件自己写,嘿嘿!估计明天中午完工。(快高考了,时间比较紧)
回复

使用道具 举报

29#
发表于 2012-4-9 23:20:16 | 只看该作者
又改了一下,逻辑上更清晰了:
  1. ::搜索当前目录下所有程序并建立快捷方式 by chenall modify by h3
  2. @echo off
  3. PUSHD %~dp0
  4. SET "BASE_DIR=%CD%"
  5. POPD
  6. if not defined StartMenu SET "StartMenu=%USERPROFILE%\「开始」菜单"
  7. if not exist %systemroot%\System32\pecmd.exe copy pecmd.exe %systemroot%\System32
  8. SET "外置程序=外置程序_%base_dir:~0,1%盘"
  9. SET "外置程序=%StartMenu%\%外置程序::=%"
  10. SET "_TF=%WinDir%\T_PETOOLS_%base_dir:~0,1%_"
  11. IF EXIST "%外置程序%" RD /S /Q "%外置程序%" 2>nul
  12. :START
  13. DEL "%_TF%*.*" 2>nul
  14. PUSHD "%base_dir%"
  15. >%_TF%LST.lst dir /s/a/b *.wim *.cmd *.bat *.exe
  16. POPD
  17. PUSHD "%WinDir%"
  18. for /f "usebackq delims=" %%i in (%_TF%LST.lst) do CALL :MAKE_LINK "%%i"
  19. START PECMD LOAD %_TF%LNK.INI
  20. DEL %_TF%*.lst
  21. POPD
  22. PUSHD %外置程序%||GOTO :EOF
  23. for /d %%i in ("%外置程序%\*") do call :MERGE_LINK "%%i"
  24. POPD
  25. goto :eof
  26. :MAKE_LINK
  27. SETLOCAL
  28. if "%~1"=="" goto :eof
  29. SET ".=%~1"
  30. SET ".=%.:&=^&%"
  31. SET "PETOOLS=%~dpn1"
  32. call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
  33. SET "PETOOLS=%PETOOLS:&=^&%"
  34. echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
  35. GOTO :EOF
  36. :MERGE_LINK
  37. CD /D %1||GOTO :EOF
  38. for /d %%i in ("%~f1\*") do call %0 "%%i"
  39. CD /D %1||GOTO :EOF
  40. set n=
  41. for /f %%i in ('dir /a/b') do (
  42.     if defined n goto :eof
  43.     set n=1
  44. )
  45. for /f "usebackq delims=" %%i in (`dir /a/b`) do move /y "%%i" ..\
  46. cd..&&rd %1
  47. goto :eof
复制代码

[ 本帖最后由 hhh333 于 2012-4-9 23:22 编辑 ]
回复

使用道具 举报

30#
 楼主| 发表于 2012-4-9 23:23:19 | 只看该作者
原帖由 monitor20 于 2012-4-9 23:01 发表 抽时间给你用AutoIt3写一个程序,读取程序目录下的配置文件来创建快捷方式到桌面或开始菜单,代码很简单,AutoIt3有专门表示各种路径的宏及丰富的函数……完成这些不成问题!配置文件自己写,嘿嘿!估计明天中午完工。 ...
呵呵!非常感谢,明天等您的好消息 ,也谢谢上面几位大哥的帮助,明天一一测试。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 09:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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