求一个将应用程序的快捷方式创建并挂载到PE的桌面的批处理
本帖最后由 有阴也有阳 于 2018-4-23 11:12 编辑求一个将应用程序的快捷方式创建并挂载到PE的桌面的批处理,进入PE后一运行这个批处理,批处理的同级目录中
的应用程序的快捷方式就能被创建并被挂载到桌面,设同级目录里有3个应用程序,分别是X1.exe、X2.exe、X3.exe,
这个批处理应该如何写?
在启动U盘中用的,在启动U盘里的目录结构是这样的:
X1.exe装在X1文件夹中,X2.exe装在X2文件夹中,X3.exe装在X3文件夹中。
我想通过分段载入的办法来解决,请问在PE中调用另外一个批处理的批处理命令应该如何写,比如调用Y文件夹中的A.bat
的批处理应该如何写?
目前基本上获得了解决:
双击“挂载常用软件的快捷方式到PE的桌面.bat”后,应用软件的快捷方式就能自动被挂载。
“挂载常用软件的快捷方式到PE的桌面.bat”的内容:
PECMD.EXE \A-在PE下使用的单文件版的工具软件\WinNTSetup_V3.8.7.3版\1.bat
PECMD.EXE \A-在PE下使用的单文件版的工具软件\EasyImageX_v1.62\1.bat
PECMD.EXE \A-在PE下使用的单文件版的工具软件\一键智能装机助理标准版V3.7.2\1.bat
PECMD.EXE \A-在PE下使用的单文件版的工具软件\安装Ghost系统的利器——DBCGhost.exe\1.bat
PECMD.EXE \A-在PE下使用的单文件版的工具软件\BIOS及UEFI引导修复\1.bat
1.bat的内容(只以挂载WinNTSetup的快捷方式的为例,其它的以此类推):
PECMD.EXE LINK %Desktop%\WinNTSetup_x86,WinNTSetup_x86.exe
PECMD.EXE LINK %Desktop%\WinNTSetup_x64,WinNTSetup_x64.exe
目前就还差一个Diskgeniu-s.exe的快捷方式弄不上来,其1.bat的内容为:
PECMD.EXE LINK %Desktop%\DiskGeniu-s,DiskGeniu-s.exe
但其快捷方式就是挂载不到桌面上。
感谢网友“captain_g”和“永远的大象”、“mdyblog”的热心指点!谢谢!!!
刚才又试了一下,在Win10x64PE中也获得了成功:
......
通过对集成在我的启动U盘里面的PE地逐一测试,发现:
可以成功挂载快捷方式的PE有:
2003PE
XPPE
Win764位PE
Win8.132位PE
Win1064位PE
微PE64位
微PE32位
不能成功挂载快捷方式的PE有:
Win732位PE
Win8.164位PE
Win1032位PE
补充:经过一番折腾,算是搞得比较理想了:
1.能直接挂载的就直接挂载了,如:EasyImageX、WinNTSetup、DBCGhost.exe等程序。
2.不能直接挂载的就先另外创建1个快捷方式,然后再用一个bat把这个快捷方式复制到桌面,例如:Diskgeniu-s32/64位程序。
3.连另外创建1个快捷方式也无法复制到桌面的,那就干脆做一个直接运行该程序的bat,只要直接运行这个bat,就能运行该程序,
如品牌通备份还原32/64位程序。
只要一运行“挂载常用软件的快捷方式到PE的桌面.bat”就能把下图中的红框里面的快捷方式全部挂载到PE的桌面:
经过后来我不停地改进,终于弄得比较理想了(2017-12-26):
1.进入PE,打开启动U盘——打开“A-在PE下使用的单文件版的工具软件”文件夹,双击运行里面的“A-挂载常用软件的快捷方式到PE的桌面.bat”:
2.就能在我的启动U盘里面所集成的所有PE的桌面上面加载打红框里面的这些个应用程序和批处理的快捷方式:
1).2003PE:
2).XPPE:
3).Win7x32PE:
4).Win7x64PE:
5).Win8.1x32PE:
6).Win8.1x64PE:
7).Win10x32PE:
8).Win10x64PE:
9).微PEx32V1.2:
10).微PEx64V1.2:
11).微PEx32V2.0:
12).微PEx64V2.0:
经过我不断地改进,终于在32/64位的微PE、32/64位的Win8.1/10PE上实现了一进入PE的桌面“挂载常用软件及bat的快捷方式到PE
的桌面.bat”的快捷方式就已经自动被挂载到了PE的桌面,双击后,启动U盘里的常用软件及bat的快捷方式就能够被挂载到桌面:
1.32/64位的微PE:
2.32/64位的微PE:
3.32位的Win8.1PE:
4.32位的Win8.1PE:
5.32位的Win8.1PE:
6.64位的Win8.1PE:
7.64位的Win8.1PE:
8.32位的Win10PE:
9.32位的Win10PE:
10.64位的Win10PE:
11.64位的Win10PE:
剩下的2003PE、XPPE、32/64位的Win7PE在技术上不是不能实现,而且在理论上也很简单,但具体操作起来过于繁琐,一旦升级更换,就会作废,
又要重新弄一遍,所以还是保持“进入PE,打开启动U盘——打开‘A-在PE下使用的单文件版的工具软件’文件夹,双击运行里面的‘A-挂载常用软件的快捷方式到
PE的桌面.bat’”的使用方法不变。
本帖最后由 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 12:58 编辑
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 captain_g 发表于 2017-12-2 10:43
最不动脑筋的做法就是在批处理中写三行:
PECMD.EXE LINK %Desktop%\X1,X1.exe
PECMD.EXE LINK %Desktop% ...
试了一下,无法挂载,谢谢你的热心帮助! 永远的大象 发表于 2017-12-2 11:08
试试这个
缺点:程序文件名需要和文件夹名保持一致
试了一下:
call \Y\A.bat 不行,
PECMD EXEC \Y\A.bat 还是不行。
谢谢!!! 本帖最后由 永远的大象 于 2017-12-2 22:49 编辑
参照你上面的需要,如果要用批处理实现的话,分成两个批处理:
一、搜索另一个批处理并执行,将其打包到WIM里面,加到启动执行,内容大致为:
@echo off
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
二、创新快捷方式
@echo off
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")
挂载常用软件到PE桌面.wcs 放到该目录, 自动加载该目录的EXE CMD BAT到桌面。
如果子目录 也放有本脚本拷贝, 自动调用子目录的脚本来处理子目录,
依次类推, 没有级数限制。
本帖最后由 有阴也有阳 于 2017-12-2 14:56 编辑
mdyblog 发表于 2017-12-2 14:10
挂载常用软件到PE桌面.wcs 放到该目录, 自动加载该目录的EXE CMD BAT到桌面。
如果子目录 也放有 ...
自动不能加载目录的EXE CMD BAT到桌面,得手动——用鼠标双击才加载。
本帖最后由 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 。。。。 本帖最后由 有阴也有阳 于 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”好了,谢谢你的热心回复!谢谢!!! @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 13:25
试了一下:
call \Y\A.bat 不行,
之前是用手机,没仔细看,因为批处理里面要么是相对路径,要么是绝对路径,位置不确定的话必需先确定位置,所以这种情况下要用CALL的话,参照下面命令:
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是直接退出,不能用来做返回 API枚举目录下的EXE 并创建文件 CMD不知道怎么写 看不懂,就是觉得高人多多。{:1_186:} 终于弄得比较理想了 本帖最后由 有阴也有阳 于 2018-1-9 17:11 编辑
mdyblog 发表于 2017-12-2 14:47
当然这样来!
什么程序 都得 启动他呀。 否则不就是病毒了。
我的PE是PE的ISO文件用G4D0.4.6a和XorBootUefi0.24整体启动,故而无法直接使用,变通了一下,终于可以使用了,
目前只在32/64位的微PEV1.2中使用:
WEPE.INI:
//设置自定义桌面壁纸
IFEX %CurDrv%\WEPE\WallPaper.JPG,FILE %CurDrv%\WEPE\WallPaper.JPG=>%SystemRoot%\web\wallpaper\Windows\img0.jpg
//以下为其它任务
FORX \A-在PE下使用的单文件版的工具软件\挂载常用bat的快捷方式到PE的桌面.wcs,&&F,0,LOAD "%&F%"
效果图:
1.
2.
谢谢你的热心指点,谢谢!!!{:1_186:}
本帖最后由 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
) 论坛里有这个批处理。搜PETOOL就出来了 很多
贴 一个
PETOOLS.INI 由PECMD调用
TIPS 加载PETOOLS工具,到开始菜单...,3000,1,#1
FORX *ab @\PETOOLS,TOOLS,0,EXEC !%Windir%\SYSTEM32\PETOOLS.cmd %TOOLS%
PETOOLS.CMD 可以把指定目录下包括子目录下的外置程序添加到菜单和桌面
@echo off
if "%~1"=="" goto :eof
if not defined StartMenu goto :eof
if "%~1"=="merge" goto :merge
if not exist "%~1" goto :eof
SET "BASE_DIR=%~1"
SET "外置程序=%~d1盘_外置程序"
SET "外置程序=%StartMenu%\%外置程序::=%"
CALL,SET "附到桌面=%%外置程序:%StartMenu%=%Desktop%%%"
SET "_TF=%WinDir%\T_PETOOLS_%base_dir:~0,1%_"
IF EXIST "%外置程序%" RD /S /Q "%外置程序%" 2>nul
IF EXIST "%附到桌面%" RD /S /Q "%附到桌面%" 2>nul
:START
DEL "%_TF%*.*" 2>nul
PUSHD "%~F1"
>%_TF%LST.lst dir /s/a/b *.wim *.cmd *.bat *.exe readme*.txt 使用说明*.txt
POPD
PUSHD "%WinDir%"
for /f "usebackq delims=" %%i in (%_TF%LST.lst) do CALL :MAKE_LINK "%%i"
ECHO.EXEC !%~F0 merge "%外置程序%" >>%_TF%LNK.INI
ECHO.EXEC !%~F0 merge "%附到桌面%" >>%_TF%LNK.INI
ECHO.FILE %_TF%LNK.INI>>%_TF%LNK.INI
START PECMD LOAD %_TF%LNK.INI
PUSHD "%~F1"
>"%_TF%SETUP.lst" dir /s/a/b setup.cmd 2>nul
>>"%_TF%SETUP.lst" dir /s/a/b setup.bat 2>nul
POPD
if exist "%_TF%SETUP.lst" For /f "delims=" %%i in ('type "%_TF%SETUP.lst"') do CALL :PETOOLS_REG %%i
DEL %_TF%*.lst
POPD
goto :eof
:MAKE_LINK
SETLOCAL
if "%~1"=="" goto :eof
if /i "%~n1"=="setup" goto :eof
SET ".=%~1"
SET ".=%.:&=^&%"
SET "PETOOLS=%~dpn1"
call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
SET "PETOOLS=%PETOOLS:&=^&%"
echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
call,SET "PETOOLS=%%PETOOLS:%外置程序%=%附到桌面%%%"
echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
GOTO :EOF
:PETOOLS_REG
pushd "%~dp1"
PECMD EXEC !%~nx1
POPD
goto :eof
:merge
PUSHD %2||GOTO :EOF
for /d %%i in ("%~2\*") do call :merge_lnk "%%i"
POPD
goto :eof
:merge_lnk
CD /D %1||GOTO :EOF
for /d %%i in ("%~f1\*") do call %0 "%%i"
CD /D %1||GOTO :EOF
set n=
for /f %%i in ('dir /a/b') do (
if defined n goto :eof
set n=1
)
for /f "usebackq delims=" %%i in (`dir /a/b`) do move /y "%%i" ..\
cd..&&rd %1
goto :eof icevan 发表于 2018-1-10 21:11
论坛里有这个批处理。搜PETOOL就出来了 很多
贴 一个
PETOOLS.INI 由PECMD调用
谢谢!不大合我的需要,PETOOLS文件夹要求挂载在PE的桌面,此批处理挂载在PE的开始菜单,而且我还要同时挂载许多其它应用程序和bat的快捷方式到PE的桌面...... 这个是同时挂到桌面和开始菜单。
icevan 发表于 2018-1-10 21:33
这个是同时挂到桌面和开始菜单。
抱歉!没有细看,很感谢你的热心提供,谢谢!!!但我自己弄得更简单方便——一双击“打开PETOOLS文件夹.bat”,PETOOLS文件夹就打开了...... 这个很好,学习了啊
请楼主分享一下,谢谢! 好帖子,学习完涨了很多知识
页:
[1]