无忧启动论坛

 找回密码
 注册
搜索

求一个将应用程序的快捷方式创建并挂载到PE的桌面的批处理

查看数: 13442 | 评论数: 23 | 收藏 7
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-12-2 09:58

正文摘要:

本帖最后由 有阴也有阳 于 2018-4-23 11:12 编辑         求一个将应用程序的快捷方式创建并挂载到PE的桌面的批处理,进入PE后一运行这个批处理,批处理的同级目录中 的应用程 ...

回复

guozhi1368 发表于 2020-4-16 11:00:43
好帖子,学习完涨了很多知识
dzy 发表于 2019-1-3 17:59:52
请楼主分享一下,谢谢!
egowssc 发表于 2019-1-3 17:36:09
这个很好,学习了啊
有阴也有阳 发表于 2018-1-10 21:37:06
icevan 发表于 2018-1-10 21:33
这个是同时挂到桌面和开始菜单。

抱歉!没有细看,很感谢你的热心提供,谢谢!!!但我自己弄得更简单方便——一双击“打开PETOOLS文件夹.bat”,PETOOLS文件夹就打开了......
icevan 发表于 2018-1-10 21:33:23
这个是同时挂到桌面和开始菜单。

点评

抱歉!没有细看,很感谢你的热心提供,谢谢!!!但我自己弄得更简单方便——一双击“打开PETOOLS文件夹.bat”,PETOOLS文件夹就打开了......  详情 回复 发表于 2018-1-10 21:37
有阴也有阳 发表于 2018-1-10 21:30:15
icevan 发表于 2018-1-10 21:11
论坛里有这个批处理。搜PETOOL就出来了 很多
贴 一个
PETOOLS.INI 由PECMD调用

谢谢!不大合我的需要,PETOOLS文件夹要求挂载在PE的桌面,此批处理挂载在PE的开始菜单,而且我还要同时挂载许多其它应用程序和bat的快捷方式到PE的桌面......
icevan 发表于 2018-1-10 21:11:14
论坛里有这个批处理。搜PETOOL就出来了 很多
贴 一个
PETOOLS.INI 由PECMD调用

  1. TIPS 加载PETOOLS工具,到开始菜单...,3000,1,#1
  2. FORX *ab @\PETOOLS,TOOLS,0,EXEC !%Windir%\SYSTEM32\PETOOLS.cmd %TOOLS%
复制代码


PETOOLS.CMD 可以把指定目录下包括子目录下的外置程序添加到菜单和桌面

  1. @echo off
  2. if "%~1"=="" goto :eof
  3. if not defined StartMenu goto :eof
  4. if "%~1"=="merge" goto :merge
  5. if not exist "%~1" goto :eof
  6. SET "BASE_DIR=%~1"
  7. SET "外置程序=%~d1盘_外置程序"
  8. SET "外置程序=%StartMenu%\%外置程序::=%"
  9. CALL,SET "附到桌面=%%外置程序:%StartMenu%=%Desktop%%%"
  10. SET "_TF=%WinDir%\T_PETOOLS_%base_dir:~0,1%_"
  11. IF EXIST "%外置程序%" RD /S /Q "%外置程序%" 2>nul
  12. IF EXIST "%附到桌面%" RD /S /Q "%附到桌面%" 2>nul
  13. :START
  14. DEL "%_TF%*.*" 2>nul
  15. PUSHD "%~F1"
  16. >%_TF%LST.lst dir /s/a/b *.wim *.cmd *.bat *.exe readme*.txt 使用说明*.txt
  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.EXEC !%~F0 merge "%附到桌面%" >>%_TF%LNK.INI
  22. ECHO.FILE %_TF%LNK.INI>>%_TF%LNK.INI
  23. START PECMD LOAD %_TF%LNK.INI
  24. PUSHD "%~F1"
  25. >"%_TF%SETUP.lst" dir /s/a/b setup.cmd 2>nul
  26. >>"%_TF%SETUP.lst" dir /s/a/b setup.bat 2>nul
  27. POPD
  28. if exist "%_TF%SETUP.lst" For /f "delims=" %%i in ('type "%_TF%SETUP.lst"') do CALL :PETOOLS_REG %%i
  29. DEL %_TF%*.lst
  30. POPD
  31. goto :eof
  32. :MAKE_LINK
  33. SETLOCAL
  34. if "%~1"=="" goto :eof
  35. if /i "%~n1"=="setup" goto :eof
  36. SET ".=%~1"
  37. SET ".=%.:&=^&%"
  38. SET "PETOOLS=%~dpn1"
  39. call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
  40. SET "PETOOLS=%PETOOLS:&=^&%"
  41. echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
  42. call,SET "PETOOLS=%%PETOOLS:%外置程序%=%附到桌面%%%"
  43. echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
  44. GOTO :EOF
  45. :PETOOLS_REG
  46. pushd "%~dp1"
  47. PECMD EXEC !%~nx1
  48. POPD
  49. goto :eof
  50. :merge
  51. PUSHD %2||GOTO :EOF
  52. for /d %%i in ("%~2\*") do call :merge_lnk "%%i"
  53. POPD
  54. goto :eof
  55. :merge_lnk
  56. CD /D %1||GOTO :EOF
  57. for /d %%i in ("%~f1\*") do call %0 "%%i"
  58. CD /D %1||GOTO :EOF
  59. set n=
  60. for /f %%i in ('dir /a/b') do (
  61.     if defined n goto :eof
  62.     set n=1
  63. )
  64. for /f "usebackq delims=" %%i in (`dir /a/b`) do move /y "%%i" ..\
  65. cd..&&rd %1
  66. goto :eof
复制代码

点评

谢谢!不大合我的需要,PETOOLS文件夹要求挂载在PE的桌面,此批处理挂载在PE的开始菜单,而且我还要同时挂载许多其它应用程序和bat的快捷方式到PE的桌面......  详情 回复 发表于 2018-1-10 21:30

评分

参与人数 1无忧币 +5 收起 理由
有阴也有阳 + 5 谢谢!!!

查看全部评分

lintrainwy 发表于 2018-1-9 17:23:36
本帖最后由 lintrainwy 于 2018-1-9 17:27 编辑
2012jiashanni 发表于 2017-12-4 17:13
API枚举目录下的EXE 并创建文件 CMD不知道怎么写


FOR /F "usebackq tokens=* delims=" %%i in (`dir /b^|findstr ".exe$"`) do (
        echo 找到:%%i
)
有阴也有阳 发表于 2017-12-26 09:49:09
终于弄得比较理想了
netarrow 发表于 2017-12-5 13:09:57
看不懂,就是觉得高人多多。
2012jiashanni 发表于 2017-12-4 17:13:52
API枚举目录下的EXE 并创建文件 CMD不知道怎么写

点评

FOR /F "usebackq tokens=* delims=" %%i in (`dir /b^|find ".exe"`) do ( echo 找到:%%i )  详情 回复 发表于 2018-1-9 17:23
永远的大象 发表于 2017-12-2 22:39:44
有阴也有阳 发表于 2017-12-2 13:25
试了一下:

call \Y\A.bat    不行,

之前是用手机,没仔细看,因为批处理里面要么是相对路径,要么是绝对路径,位置不确定的话必需先确定位置,所以这种情况下要用CALL的话,参照下面命令:
  1. for %%i in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do if exist %%i:\Y\A.bat call %%i:\Y\A.bat
复制代码

缺点:如果有两个盘符存在 \Y\A.bat ,两个\Y\A.bat均会被执行一次

额外小提示:CALL是可以返回的,返回的方式有两种:一是执行到批处理结束,二是用exit /b 返回,但是,exit是直接退出,不能用来做返回
lintrainwy 发表于 2017-12-2 15:03:03
@ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
Title Origin 2017 安装
mode con: cols=65 lines=25
color 0A

:-------------------------------------
echo 检查 管理员权限...
        %Windir%\System32\FLTMC.exe >nul 2>&1 && goto gotAdmin
        set "vbs=CreateObject(""Shell.Application"").ShellExecute ""%~0"", """", """", ""runas"", 1:window.close"
        mshta VBScript:Execute("%vbs%") & exit /b
:gotAdmin
    cls & pushd "%CD%"  & CD /D "%~dp0"
:--------------------------------------

set "PathBat=%~dp0"
set "PathBat=%PathBat:~0,-1%"
set "PathDesktop=%USERPROFILE%\Desktop"



::=======================================
echo 创建快捷方式
echo.
set "PathExe=%PathBat%"

set "PathLnk=%PathDesktop%"
set "Lnk=Test.lnk"
set "Target=%PathExe%\Test.exe"
set "Arguments="
set "WorkingDir=%PathExe%"
set "Hotkey="
set "WindowStyle=1"
set "Description=描述"

echo 创建 %Lnk%
call :CreateShort "%PathLnk%\%Lnk%" "%Target%" "%Arguments%" "%WorkingDir%\" "%Hotkey%" "%WindowStyle%" "%Description%"

echo.
echo 快捷方式创建完成!
choice /c YN /t 1 /d Y>nul

goto :EOF
===================================================
::LnkPath               快捷方式位置
::LnkFile               快捷方式名
::TargetPath            目标
::Arguments             参数
::WorkingDirectory      起始位置
::Hotkey                快捷键
::WindowStyle           窗口启动状态
::Description           快捷方式备注
::IconLocation          快捷方式图标,不设则使用默认图标

:CreateShort
set "vbs=                        set a=CreateObject(""WScript.Shell"")"
set "vbs=%vbs%:        set b=a.CreateShortcut(""%~1"")"
set "vbs=%vbs%:        b.TargetPath=""%~2"""
set "vbs=%vbs%:        b.Arguments=""%~3"""
set "vbs=%vbs%:        b.WorkingDirectory=""%~4"""
set "vbs=%vbs%:        b.Hotkey=""%~5"""
set "vbs=%vbs%:        b.WindowStyle=""%~6"""
set "vbs=%vbs%:        b.Description=""%~7"""
set "vbs=%vbs%:        b.Save"
set "vbs=%vbs%:        close"
mshta VBScript:Execute("%vbs%")
goto :EOF

:EOF
有阴也有阳 发表于 2017-12-2 15:00:23
本帖最后由 有阴也有阳 于 2017-12-2 15:34 编辑
mdyblog 发表于 2017-12-2 14:47
当然这样来!
什么程序 都得 启动他呀。 否则不就是病毒了。


谢谢!!!,我弄明白了,是因为没有在PECMD.INI中添加:
FORX \挂载常用软件到PE桌面.wcs,&&F,0,LOAD "%&F%"

所以要手动。

        不过文件夹在启动U盘中,启动U盘插到不同的电脑上后其盘符——路径是不一样的,所以在PECMD.INI中启动U盘等的路径不好写,

还是到启动U盘里面的文件夹中直接点击“挂载常用软件的快捷方式到PE的桌面.bat”好了,谢谢你的热心回复!谢谢!!!
mdyblog 发表于 2017-12-2 14:47:51
本帖最后由 mdyblog 于 2017-12-2 14:51 编辑
有阴也有阳 发表于 2017-12-2 14:44
自动不能加载目录的EXE CMD BAT到桌面,得手动——用鼠标双击才加载。


当然这样来!
什么程序 都得 启动他呀。 否则不就是病毒了。

在 PECMD.INI 中 启动他。
每次PE启动就能自动启动 。

PECMD.INI:
FORX \挂载常用软件到PE桌面.wcs,&&F,0,LOAD "%&F%"

在U盘胡某分区根目录,放个  \挂载常用软件到PE桌面.wcs
PE自动启动他。 它再启动子目录的 挂载常用软件到PE桌面.wcs 。。。。

点评

我的PE是ISO文件用G4D0.4.6a和XorBoot Uefi 0.24整体启动,故而无法直接使用,变通了一下,终于可以使用了, 目前只在32/64位的微PE V1.2中使用: WEPE.INI: //设置自定义桌面壁纸 IFEX %CurDr  详情 回复 发表于 2018-1-9 17:10
谢谢!!!,我弄明白了,是因为没有在PECMD.INI中添加: FORX \挂载常用软件到PE桌面.wcs,&&F,0,LOAD "%&F%" 所以要手动。  详情 回复 发表于 2017-12-2 15:00
mdyblog 发表于 2017-12-2 14:10:36
挂载常用软件到PE桌面.WCS.zip (456 Bytes, 下载次数: 45)


挂载常用软件到PE桌面.wcs 放到该目录, 自动加载该目录的EXE CMD BAT到桌面。

如果子目录 也放有本脚本拷贝, 自动调用子目录的脚本来处理子目录,
依次类推, 没有级数限制。

点评

自动不能加载目录的EXE CMD BAT到桌面,得手动——用鼠标双击才加载。  详情 回复 发表于 2017-12-2 14:44
永远的大象 发表于 2017-12-2 13:48:03
本帖最后由 永远的大象 于 2017-12-2 22:49 编辑

参照你上面的需要,如果要用批处理实现的话,分成两个批处理:
一、搜索另一个批处理并执行,将其打包到WIM里面,加到启动执行,内容大致为:
  1. @echo off
  2. for %%i in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do if exist %%i:\Y\A.bat call %%i:\Y\A.bat
复制代码


二、创新快捷方式
  1. @echo off
  2. for /f "tokens=*" %%i in ('dir /ad /b') do mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\%%i.lnk""):b.TargetPath=""%~dp0%%i\%%i.exe"":b.WorkingDirectory=""%~dp0%%i"":b.Save:close")
复制代码

有阴也有阳 发表于 2017-12-2 13:25:59
永远的大象 发表于 2017-12-2 11:08
试试这个
缺点:程序文件名需要和文件夹名保持一致

试了一下:

call \Y\A.bat    不行,

PECMD EXEC \Y\A.bat   还是不行。

谢谢!!!

点评

之前是用手机,没仔细看,因为批处理里面要么是相对路径,要么是绝对路径,位置不确定的话必需先确定位置,所以这种情况下要用CALL的话,参照下面命令: 缺点:如果有两个盘符存在 \Y\A.bat ,两个\Y\A.bat均会被  详情 回复 发表于 2017-12-2 22:39
路径前面的反斜杠去掉试试  详情 回复 发表于 2017-12-2 13:48
有阴也有阳 发表于 2017-12-2 11:08:31
captain_g 发表于 2017-12-2 10:43
最不动脑筋的做法就是在批处理中写三行:
PECMD.EXE LINK %Desktop%\X1,X1.exe
PECMD.EXE LINK %Desktop% ...

试了一下,无法挂载,谢谢你的热心帮助!
永远的大象 发表于 2017-12-2 11:08:06
本帖最后由 永远的大象 于 2017-12-2 12:58 编辑
  1. for /f "tokens=*" %%i in ('dir /ad /b') do mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\%%i.lnk""):b.TargetPath=""%~dp0%%i\%%i.exe"":b.WorkingDirectory=""%~dp0%%i"":b.Save:close")
复制代码

试试这个
缺点:程序文件名需要和文件夹名保持一致

PECMD可以用加载程序的方式来加载批处理
命令貌似是
PECMD EXEC ***.BAT
隐藏窗口的话,则在路径前面加个!,比如:
PECMD EXEC !***.BAT

至于批处理里面加载另一个批处理,可以用CALL

点评

试了一下: call \Y\A.bat 不行, PECMD EXEC \Y\A.bat 还是不行。 谢谢!!!  详情 回复 发表于 2017-12-2 13:25
captain_g 发表于 2017-12-2 10:43:28
本帖最后由 captain_g 于 2017-12-2 10:55 编辑

最不动脑筋的做法就是在批处理中写三行:
PECMD.EXE LINK %Desktop%\X1,X1.exe
PECMD.EXE LINK %Desktop%\X2,X2.exe
PECMD.EXE LINK %Desktop%\X3,X3.exe

也可以先搞好一个INI文件,内容类似这样:
LINK %Desktop%\GHOSTEXP,%CurDir%\GHOSTEXP.EXE
然后在批处理中PECMD.EXE LOAD 那个INI文件;

点评

试了一下,无法挂载,谢谢你的热心帮助!  详情 回复 发表于 2017-12-2 11:08
试了一下,无法挂载,谢谢你的热心帮助!  详情 回复 发表于 2017-12-2 11:08

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

闽公网安备 35020302032614号

GMT+8, 2024-5-8 03:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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