找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

   火... [复制链接]
 楼主| 发表于 2016-7-7 22:48:11 | 显示全部楼层
pseudo 发表于 2016-7-7 21:14
请教M大,目前pecmd有什么办法将标准ud里的一个iso文件映射为光盘?
或者,有办法将某物理盘的若干连续扇 ...

1:
将标准ud里的一个iso文件映射为光盘
moun-udm -udfs  -udm-   -udimg:  A.ISO  \\.\PhysicalDrive0  R:

\\.\PhysicalDrive0  为0号磁盘, 数字从0开始. 对应(hd0)
0226.PNG


2:更通用的是 扇区映射 RAMD.
~~~~~~~~~~~~~
有办法将某物理盘的若干连续扇区映射为光盘

0227.PNG

RAMD ImDisk*ret*2097280s*5734529s*0*\\.\PhysicalDrive0  -a  -o hd -m Z:
2097280s*5734529s
就是扇区序列
从2097280扇区开始,5734529个扇区. (从0开始.同一规定1扇区512字节)

点评

学习了,谢谢。  详情 回复 发表于 2016-7-8 01:26
回复

使用道具 举报

发表于 2016-7-7 23:55:07 | 显示全部楼层
本帖最后由 红毛樱木 于 2016-7-8 07:51 编辑
  1. EXEC =a.exe
复制代码

有没有办法在这个等待运行的基础上加个时间判断?比如等待这个a.exe运行5秒钟之后,如果还没有结束,就kill a.exe


不开子进程的情况可不可以?
执行winpeshl.exe在某些特殊情况会超时,需要手动结束。
回复

使用道具 举报

发表于 2016-7-7 23:55:07 | 显示全部楼层
  1. EXEC =a.exe
复制代码

有没有办法在这个等待运行的基础上加个时间判断?比如等待这个a.exe运行5秒钟之后,如果还没有结束,就kill a.exe


点评

EXEC -PID:&&PID a.exe WAIT 5000 *%&PID% //最多等到5000ms KILL %&PID%  详情 回复 发表于 2016-7-12 07:24
单进程 这样就可以了  详情 回复 发表于 2016-7-8 13:22
回复

使用道具 举报

发表于 2016-7-8 01:26:16 | 显示全部楼层
mdyblog 发表于 2016-7-7 22:48
1:
将标准ud里的一个iso文件映射为光盘
moun-udm -udfs  -udm-   -udimg:  A.ISO  \\.\PhysicalDrive0  ...

学习了,谢谢。
回复

使用道具 举报

发表于 2016-7-8 13:22:32 | 显示全部楼层
红毛樱木 发表于 2016-7-7 23:55
有没有办法在这个等待运行的基础上加个时间判断?比如等待这个a.exe运行5秒钟之后,如果还没有结束,就ki ...

单进程 这样就可以了
  1. envi ap1=cmd.exe
  2. exec --pid:varpid %ap1%
  3. envi n=0
  4.     LOOP #%n% < 6,
  5. {
  6. FIND --pid pid,%ap1%
  7. find $%pid%=0,exit loop
  8. wait 1000
  9. calc n=%n%+1
  10. }

  11. mess over,%pid%
  12. kill *%varpid%
复制代码

点评

好的,谢谢。  详情 回复 发表于 2016-7-8 16:59
回复

使用道具 举报

发表于 2016-7-8 16:59:15 来自手机 | 显示全部楼层
diannao338 发表于 2016-7-8 13:22
单进程 这样就可以了

好的,谢谢。
回复

使用道具 举报

发表于 2016-7-10 10:06:52 | 显示全部楼层
本帖最后由 ling3882688 于 2016-7-10 10:55 编辑

M大,下面的挂载,挂载之后如何卸载?没有指定盘符的话如何卸载?
  1. PART list disk,&&disk
  2. FORX * %&disk%,&&hd,
  3. {      //加载所有U+
  4.          MOUN  -udm  -mall  -mhide  -u+  -udm-  \\.\PhysicalDrive%&hd%  C-
  5. }
复制代码

点评

MOUN -udm -mall -mhide -u+ -udm- -ret:&drvs \\.\PhysicalDrive%* C- MESS. %&Drvs% %&Drvs% 中记录了所挂载的盘符。 在一个一个地卸载(如D:): RAMD Imdisk* -D -m D:  详情 回复 发表于 2016-7-10 19:20
回复

使用道具 举报

 楼主| 发表于 2016-7-10 19:20:33 | 显示全部楼层
本帖最后由 mdyblog 于 2016-7-12 07:16 编辑
ling3882688 发表于 2016-7-10 10:06
M大,下面的挂载,挂载之后如何卸载?没有指定盘符的话如何卸载?




MOUN  -udm  -mall  -mhide  -u+  -udm-    -ret:&drvs   \\.\PhysicalDrive*  C-
MESS. %&Drvs%

%&Drvs% 中记录了所挂载的盘符。 在一个一个地卸载(如D:):
RAMD  Imdisk* -D -m  D:

点评

是这样吗?怎么获取的是空的呢。  详情 回复 发表于 2016-7-11 10:56
谢M大,之前有个问题您可能没看到,重发一下。 M大帮忙看看哪里有问题,我想获取Windows系统分区。但是有时候不准确。  详情 回复 发表于 2016-7-11 10:48
回复

使用道具 举报

发表于 2016-7-11 10:48:46 | 显示全部楼层
mdyblog 发表于 2016-7-10 19:20
MOUN  -udm  -mall  -mhide  -u+  -udm-    -ret:&drvs   \\.\PhysicalDrive%*  C-
MESS. %&Drvs%
...

谢M大,之前有个问题您可能没看到,重发一下。
M大帮忙看看哪里有问题,我想获取Windows系统分区。但是有时候不准确。

  1. _SUB GetWPart
  2.         ENVI^ FORCELOCAL=1
  3.         SET &hd=%~1
  4.         CALC #hd=%hd%
  5.         PART list part %hd%,&&pts
  6.         SET WinD=0
  7.         FORX * %pts%,&&pt,
  8.         {
  9.             LSTR &&c0=1,%pt%
  10.             FIND $%c0%=@, EXIT -  //扩展
  11.             TEAM  PART -phy# list part %hd%:%pt%,&&v1| MSTR &&ltp,&&ppt,&&Vol=<3><8><9>%v1%
  12.             IFEX %Vol%\Windows\System32\kernel32.dll,CALC WinD=%&ppt%
  13.         }  
  14.         ENVI-ret %~2=%WinD%
  15. _END

  16. GetWPart 0 &&WPart
  17. MESS %WPart%
复制代码

点评

回过了. LSTR &&c0=1,%pt% FIND $%c0%=@, EXIT - //扩展 改成 IFEX #%pt%  详情 回复 发表于 2016-7-12 07:26
回复

使用道具 举报

发表于 2016-7-11 10:56:43 | 显示全部楼层
mdyblog 发表于 2016-7-10 19:20
MOUN  -udm  -mall  -mhide  -u+  -udm-    -ret:&drvs   \\.\PhysicalDrive%*  C-
MESS. %&Drvs%
...

是这样吗?怎么获取的是空的呢。

  1. PART list disk,&&disk
  2. FORX * %&disk%,&&hd,
  3. {      //加载所有U+
  4.          MOUN  -udm  -mall  -mhide  -u+  -udm- -ret:&drvs \\.\PhysicalDrive%&hd%  C-
  5. }
  6. MESS. %&Drvs%
复制代码

点评

不用FORX循环. * 就表示所有磁盘了. 测试效果: J: (hd0) New (udm) -1 K: (hd0) New (udm) -1 L: (hd1) New (udm) -1 M: (hd1) New (udm) -1 N: (hd2) New (udm) -1 P: (hd2) New (udm) -1 Q:  详情 回复 发表于 2016-7-12 07:19
回复

使用道具 举报

发表于 2016-7-11 21:07:16 | 显示全部楼层
下载链接已失效了
回复

使用道具 举报

 楼主| 发表于 2016-7-12 07:19:38 | 显示全部楼层
ling3882688 发表于 2016-7-11 10:56
是这样吗?怎么获取的是空的呢。

不用FORX循环. * 就表示所有磁盘了.

  1. MOUN  -udm  -mall  -mhide  -u+  -udm-    -ret:&drvs   \\.\PhysicalDrive*  C-
  2. MESS. %&Drvs%
复制代码


测试效果:
J:  (hd0) New (udm) -1
K:  (hd0) New (udm) -1
L:  (hd1) New (udm) -1
M:  (hd1) New (udm) -1
N:  (hd2) New (udm) -1
P:  (hd2) New (udm) -1
Q:  (hd2) New (udm) -1


第3列为New 表示本次新加载的.

点评

谢M大。  详情 回复 发表于 2016-7-14 23:38
回复

使用道具 举报

 楼主| 发表于 2016-7-12 07:24:22 | 显示全部楼层
红毛樱木 发表于 2016-7-7 23:55
有没有办法在这个等待运行的基础上加个时间判断?比如等待这个a.exe运行5秒钟之后,如果还没有结束,就ki ...

EXEC  -PID:&&PID    a.exe
WAIT 5000   *%&PID%   //最多等到5000ms
KILL   %&PID%
回复

使用道具 举报

 楼主| 发表于 2016-7-12 07:26:07 | 显示全部楼层
ling3882688 发表于 2016-7-11 10:48
谢M大,之前有个问题您可能没看到,重发一下。
M大帮忙看看哪里有问题,我想获取Windows系统分区。但是 ...

回过了.

LSTR &&c0=1,%pt%
FIND $%c0%=@, EXIT -  //扩展

改成
IFEX #%pt%<=0, EXIT -  
试试

点评

M大,上次改完还是有点问题,如果磁盘0没有任何windows分区,按说返回值应该是0.如果我把这个脚本放到PE的system32目录下运行,返回值就是1.放到桌面或者U盘里返回值才是正确的0.不知是咋回事。  详情 回复 发表于 2016-7-17 12:25
谢M大。  详情 回复 发表于 2016-7-14 23:36
M大,下载链接全部失效了,修复一下呗  详情 回复 发表于 2016-7-12 08:32
回复

使用道具 举报

发表于 2016-7-13 18:40:55 | 显示全部楼层
下载链接已全部失效了,请尽快恢复一不吧!
回复

使用道具 举报

发表于 2016-7-14 23:36:34 | 显示全部楼层
mdyblog 发表于 2016-7-12 07:26
回过了.

LSTR &&c0=1,%pt%

谢M大。
回复

使用道具 举报

发表于 2016-7-14 23:38:07 | 显示全部楼层
mdyblog 发表于 2016-7-12 07:19
不用FORX循环. * 就表示所有磁盘了.

谢M大。
回复

使用道具 举报

发表于 2016-7-17 12:25:22 | 显示全部楼层
本帖最后由 ling3882688 于 2016-7-17 14:40 编辑
mdyblog 发表于 2016-7-12 07:26
回过了.

LSTR &&c0=1,%pt%

M大,上次改完还是有点问题,如果磁盘0没有任何windows分区,按说返回值应该是0.如果我把这个脚本放到PE的system32目录或者桌面反正只要是在PE的系统盘任何路径下运行,返回值就是1.放到U盘里返回值才是正确的0.不知是咋回事。是不是把PE也当作windows判断进去了?

问题出在当%VOL%为空的时候是默认当前磁盘。该如何修改呢?
我加了一句:            IFEX |%Vol%=, EXIT -
M大看看有问题不?

  1. _SUB GetWPart
  2.         ENVI^ FORCELOCAL=1
  3.         SET &hd=%~1
  4.         CALC #hd=%hd%
  5.         PART list part %hd%,&&pts
  6.         SET WinD=0
  7.         FORX * %pts%,&&pt,
  8.         {
  9. //LSTR &&c0=1,%pt%
  10. //FIND $%c0%=@, EXIT -  //扩展
  11.             IFEX #%pt%<=0, EXIT -
  12.             TEAM  PART -phy# list part %hd%:%pt%,&&v1| MSTR &&ltp,&&ppt,&&Vol=<3><8><9>%v1%
  13.             IFEX |%Vol%=, EXIT -
  14.             IFEX %Vol%\Windows\System32\kernel32.dll,CALC WinD=%&ppt%
  15.         }  
  16.         ENVI-ret %~2=%WinD%
  17. _END

  18. GetWPart 0 &&WPart
  19. MESS %WPart%
复制代码

点评

在PE的系统盘任何路径下运行,返回值就是1 ----------------------- LOGS * X.LOG _SUB GetWPart ENVI^ FORCELOCAL=1 SET &hd=%~1 CALC #hd=%hd% PART list part %hd%,&&p  详情 回复 发表于 2016-7-17 18:26
回复

使用道具 举报

 楼主| 发表于 2016-7-17 18:26:28 | 显示全部楼层
ling3882688 发表于 2016-7-17 12:25
M大,上次改完还是有点问题,如果磁盘0没有任何windows分区,按说返回值应该是0.如果我把这个脚本放到PE ...

在PE的系统盘任何路径下运行,返回值就是1
-----------------------

LOGS * X.LOG
_SUB GetWPart
        ENVI^ FORCELOCAL=1
        SET &hd=%~1
        CALC #hd=%hd%
        PART list part %hd%,&&pts
        SET WinD=0
        FORX * %pts%,&&pt,
        {
            IFEX #%pt%<=0, EXIT -
            TEAM  PART -phy# list part %hd%:%pt%,&&v1| MSTR &&ltp,&&ppt,&&Vol=<3><8><9>%v1%
//            IFEX |%Vol%=, EXIT -
            IFEX %Vol%\Windows\System32\kernel32.dll,CALC WinD=%&ppt%
        }  
        ENVI-ret %~2=%WinD%
_END

GetWPart 0 &&WPart
MESS %WPart%

~~~~
在PE的系统盘X:\下运行,再把看看X.LOG,就知道原因了。还不清楚就传上来,我看看。
回复

使用道具 举报

发表于 2016-7-17 19:22:47 | 显示全部楼层
本帖最后由 ling3882688 于 2016-7-17 19:24 编辑
mdyblog 发表于 2016-7-17 18:26
在PE的系统盘任何路径下运行,返回值就是1
-----------------------




13        {IFEX \Windows\System32\kernel32.dll,CALC WinD=1}
13        [CALC WinD=1]        <0>        :操作成功完成。
就是这里的问题,空的时候默认当前磁盘,而当前磁盘正好是X盘。

log.zip (918 Bytes, 下载次数: 3)

点评

IFEX %Vol%\Windows\System32\kernel32.dll,CALC WinD=%&ppt% --------------------------- 还有这句啊。 那是要 排除 %Vol% 为空: IFEX |%Vol%=, EXIT -  详情 回复 发表于 2016-7-17 20:18
回复

使用道具 举报

 楼主| 发表于 2016-7-17 20:18:16 | 显示全部楼层
ling3882688 发表于 2016-7-17 19:22
13        {IFEX \Windows\System32\kernel32.dll,CALC WinD=1}
13        [CALC WinD=1]                :操作成功完成。
就 ...

IFEX %Vol%\Windows\System32\kernel32.dll,CALC WinD=%&ppt%
---------------------------
还有这句啊。
那是要 排除 %Vol% 为空:
IFEX |%Vol%=, EXIT -

点评

嗯,就是这么改的。谢谢M大。 对于空值 0值 字符串 数字的比较有时候还是犯迷糊。 这四个值比较的话大小是怎么分的?如果变量是空,如果用数字比较的话就是等于0吧?  详情 回复 发表于 2016-7-18 00:32
回复

使用道具 举报

发表于 2016-7-17 21:43:52 | 显示全部楼层
M大请问如何用PECMD做个计算。如。400+400=800然后800弄成一个变量

点评

已解决。  详情 回复 发表于 2016-7-17 22:27
回复

使用道具 举报

发表于 2016-7-17 22:27:09 | 显示全部楼层
chxm1023 发表于 2016-7-17 21:43
M大请问如何用PECMD做个计算。如。400+400=800然后800弄成一个变量

已解决。
回复

使用道具 举报

发表于 2016-7-18 00:32:11 | 显示全部楼层
mdyblog 发表于 2016-7-17 20:18
IFEX %Vol%\Windows\System32\kernel32.dll,CALC WinD=%&ppt%
---------------------------
还有这句 ...

嗯,就是这么改的。谢谢M大。
对于空值 0值 字符串 数字的比较有时候还是犯迷糊。
这四个值比较的话大小是怎么分的?如果变量是空,如果用数字比较的话就是等于0吧?

点评

数值比较时,无效的 数值均当作 0  详情 回复 发表于 2016-7-18 11:26
回复

使用道具 举报

 楼主| 发表于 2016-7-18 11:26:17 | 显示全部楼层
ling3882688 发表于 2016-7-18 00:32
嗯,就是这么改的。谢谢M大。
对于空值 0值 字符串 数字的比较有时候还是犯迷糊。
这四个值比较的话大 ...

数值比较时,无效的 数值均当作 0

点评

一般的程序都是I这么处理的吧?还是PECMD这么处理。  详情 回复 发表于 2016-7-18 15:07
回复

使用道具 举报

发表于 2016-7-18 15:07:55 | 显示全部楼层
mdyblog 发表于 2016-7-18 11:26
数值比较时,无效的 数值均当作 0

一般的程序都是I这么处理的吧?还是PECMD这么处理。
回复

使用道具 举报

发表于 2016-7-18 15:48:03 | 显示全部楼层
M大。请问如何判断出U盘数据分区的格式。比如exfat格式的分区就提示。

点评

FDRV *vol ,FS=F: MESS. %FS% //ExFAT NTFS FAT32 ...  详情 回复 发表于 2016-7-19 10:47
回复

使用道具 举报

 楼主| 发表于 2016-7-19 10:47:58 | 显示全部楼层
chxm1023 发表于 2016-7-18 15:48
M大。请问如何判断出U盘数据分区的格式。比如exfat格式的分区就提示。

FDRV  *vol  ,FS=F:
MESS. %FS%  //ExFAT  NTFS  FAT32  ...

点评

M大如何排除EXFAT格式。就是说如果U盘是EXFAT格式就跳出窗口提示。NTFS或者fat32则不提示。  详情 回复 发表于 2016-7-19 14:57
回复

使用道具 举报

发表于 2016-7-19 14:57:52 | 显示全部楼层
mdyblog 发表于 2016-7-19 10:47
FDRV  *vol  ,FS=F:
MESS. %FS%  //ExFAT  NTFS  FAT32  ...

M大如何排除EXFAT格式。就是说如果U盘是EXFAT格式就跳出窗口提示。NTFS或者fat32则不提示。

点评

FDRV *vol ,FS=F: FIND $%FS%=ExFAT, MESS IS ExFAT  详情 回复 发表于 2016-7-23 09:21
回复

使用道具 举报

发表于 2016-7-20 16:39:57 | 显示全部楼层
本帖最后由 ling3882688 于 2016-7-21 11:45 编辑

M大,4K磁盘现在PECMD操作支持还是有问题吧,主要是PART命令相关的一些操作。
part里的命令,比如重建分区啥的,没有任何反应。还有检测分区的一些命令也获取不到任何数值。

点评

你是说 “4K字节扇区“ 的 磁盘吧。 目前不支持。 很久以前有人(可能就是你吧)提过,没有环境,一直没做。 前不久(大概2个月前),想起可以远程调试。 但是找不到原来是谁提出来的。 就在网上留帖子,问谁  详情 回复 发表于 2016-7-23 09:26
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-18 09:41

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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