|
本帖最后由 527104427 于 2025-4-17 12:01 编辑
pecmd要用最新的,否则没这功能。
#code=936T950
set^ EnviMode=1
set^ ForceLocal=1
call FindSystemISO Z:
exit
_sub FindSystemISO
part list disk ,DiskList
forx *v DiskList,DiskNum,
{
call $--qd --ret:h Kernel32.dll,CreateFileW,$\\.\PhysicalDrive%DiskNum%,#2147483648,#3,#0,#3,#128,#0
ifex $%h%<>-1,
{
set nInBufferSize=0xC
set$# lpInBuffer=*%nInBufferSize% 0
calc nOutBufferSize=0x28 + 1K
set$# lpOutBuffer=*%nOutBufferSize% 0
set$# lpBytesReturned=*%ptrlen% 0
call $--qd --ret:RetDeviceIoControl Kernel32.dll,DeviceIoControl,#%h%,#2954240,*lpInBuffer,#%nInBufferSize%,*lpOutBuffer,#%nOutBufferSize%,*lpBytesReturned,#0
call $--qd --bool --ret:RetCloseHandle Kernel32.dll,CloseHandle,#%h%
ifex $[ %RetDeviceIoControl%<>0 & ( %lpOutBuffer?char:10%=1 | %lpOutBuffer?long:28%=7 ) ],
{
part list part %DiskNum%,PartNumList
sed -ex PartNumList=0,[-@=]\z(\b+)*,,PartNumList
forx *v PartNumList,PartNum,
{
ifex \\.\GLOBALROOT\device\Harddisk%DiskNum%\Partition%PartNum%\SystemISO\,
{
set tmpdrv=%~1
find *=tmpdrv,
{
fdrv -idle DrvList=*
mstr * tmpdrv=<-1>DrvList
}
find *<>tmpdrv,!! subj *%tmpdrv%,\Device\Harddisk%DiskNum%\Partition%PartNum% //show * %DiskNum%:%PartNum%,%tmpdrv% //subj *%tmpdrv%,\\?\Harddisk%DiskNum%Partition%PartNum%
exit _sub
}
}
}
}
}
_end
|
|