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

[求助] pecmd清空磁盘扇区

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
列出需要操作的磁盘

选择从第几扇区开始(默认0扇区),清空多少个扇区。

pecmd可以清空磁盘扇区为0不可以。找了一圈没找到合适的。详细pe中有pecmd,它功能强大。
主要是diskpart clean 清除不太干净,有些扇区还有内容。

最好能同时支持gui和命令行,命令行的话比如dcle 0 0-2048,代表清空0号磁盘的0到2048扇区为0
发表于 4 天前 来自手机 | 显示全部楼层
10系统中的format命令就支持分区清零,可选写入随机数,还支持写入次数,,貌似是/p参数,用的极少。

另外,系统自带重置此电脑,选择不保留数据,默认会对数据进行抹除,无法恢复。

点评

我只需要清除磁盘前部一段扇区就可以了。 format是按分区清除。而且我是填充0就可以了。 因为我在机房更新联想智能云教室,学生机由原来的一个版本的云教室,换成另外一个版本的运行教室,需要先把所有学生机清空,  详情 回复 发表于 4 天前
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
没折腾过这个
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
nttwqz 发表于 2026-6-2 11:37
10系统中的format命令就支持分区清零,可选写入随机数,还支持写入次数,,貌似是/p参数,用的极少。

另外 ...

我只需要清除磁盘前部一段扇区就可以了。
format是按分区清除。而且我是填充0就可以了。

因为我在机房更新联想智能云教室,学生机由原来的一个版本的云教室,换成另外一个版本的运行教室,需要先把所有学生机清空,使用diskpart clean大部分都可以(批量操作)但是有一台不行,部署后就加载映像错误,按f12的uefi启动菜单可以看到有2个bcd引导菜单,所以我用diskgenius把前2048个扇区都填充0,然后再部署就可以了。

但是需要批量清0的话,还是需要一个命令行的程序,找了一下没有太合适的。

点评

加载映像错误,可能和安装工具、映像本身、分区等有关,因为你清除2048个扇区之后,肯定重新分区重装系统了。 dd有这个功能,具体可以问AI,这是个linux下的工具,好像有win版本,可以自己研究下。  详情 回复 发表于 4 天前
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
期待高手出手
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
PUTF -dd -bs=512 -count=1 -len=512 \\.\PhysicalDrive2,512,zero
---------------------
PUTF -dd [-bs=BS] [-ibs=BS] [-obs=BS] [-count=COUNT] [-len=LEN] [-skip=SKIP] [-skipb=SKIPB] [-va] [-conv=notrunc] [-quick|-qspace]   <文件名>,[输出起始位置],输入文件名或Int64
BS为块字节,COUNT为块数
磁盘 \\.\PhysicalDrive0~N
-----------------
一般一个扇区为512字节,不过现在很多新磁盘一个扇区大小为4096字节(俗称4K原生磁盘)

点评

这样对不对  详情 回复 发表于 4 天前
好的,我测试一下。 另外,pecmd的 PART -raw list drv PART list disk PART list part运行没有反应是语法不对吗。  详情 回复 发表于 4 天前
回复

使用道具 举报

发表于 4 天前 来自手机 | 显示全部楼层
freesoft00 发表于 2026-6-2 14:32
我只需要清除磁盘前部一段扇区就可以了。
format是按分区清除。而且我是填充0就可以了。


加载映像错误,可能和安装工具、映像本身、分区等有关,因为你清除2048个扇区之后,肯定重新分区重装系统了。

dd有这个功能,具体可以问AI,这是个linux下的工具,好像有win版本,可以自己研究下。

点评

dd我看windows版还是beta版本,所以想着能用pecmd最好了  详情 回复 发表于 4 天前
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
nttwqz 发表于 2026-6-2 16:36
加载映像错误,可能和安装工具、映像本身、分区等有关,因为你清除2048个扇区之后,肯定重新分区重装系统 ...

dd我看windows版还是beta版本,所以想着能用pecmd最好了
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
红毛樱木 发表于 2026-6-2 16:12
PUTF -dd -bs=512 -count=1 -len=512 \\.\PhysicalDrive2,512,zero
---------------------
PUTF -dd [-bs=B ...

好的,我测试一下。
另外,pecmd的  PART -raw list drv    PART  list disk   PART  list part运行没有反应是语法不对吗。

点评

这些都要按格式给参数(数据),要返回变量。  详情 回复 发表于 4 天前
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
freesoft00 发表于 2026-6-2 16:42
好的,我测试一下。
另外,pecmd的  PART -raw list drv    PART  list disk   PART  list part运行没有 ...
  1. PART -raw list drv C:,&a
  2. MESS. %&a%@
复制代码


这些都要按格式给参数(数据),要返回变量。
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
没有弄过

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
红毛樱木 发表于 2026-6-2 16:12
PUTF -dd -bs=512 -count=1 -len=512 \\.\PhysicalDrive2,512,zero
---------------------
PUTF -dd [-bs=B ...
  1. ENVI^ EnviMode=1
  2. ENVI^ ForceLocal=1

  3. // Usage: clear.exe disk start sectors [/f]
  4. // Example: clear.exe 1 0 2048

  5. SET &disk=%~1
  6. SET &start=%~2
  7. SET &cnt=%~3
  8. SET &force=%~4

  9. // No parameters, show help
  10. FIND $%&disk%=,
  11. {
  12.     MESS === Disk Sector Eraser ===\n\nUsage: clear.exe disk start sectors [/f]\n\nExamples:\n  clear.exe 0 0 2048\n  clear.exe 0 0 2048 /f\n\n/f = force mode (no confirmation)\n\nRun as Administrator!@Help#OK*12000
  13.     EXIT FILE
  14. }

  15. // Convert to numbers
  16. CALC #&diskNum=%&disk%
  17. CALC #&startNum=%&start%
  18. CALC #&cntNum=%&cnt%

  19. // Default values
  20. FIND $%&startNum%=, SET &startNum=0
  21. FIND $%&cntNum%=, SET &cntNum=2048

  22. // Calculate sector count (+1 to include end sector)
  23. CALC #&count=%&cntNum% + 1
  24. CALC #&offset=%&startNum% * 512
  25. CALC #&bytes=%&count% * 512

  26. // With /f parameter - silent mode, no confirmation, show result after done
  27. FIND $%&force%=/f,
  28. {
  29.     PUTF -dd -bs=512 -count=%&count% \\.\PhysicalDrive%&diskNum%,%&offset%,zero
  30.     MESS Done!\n\nDisk: %&diskNum%\nStart: %&startNum%\nSectors: %&count%@OK#OK*6000
  31.     EXIT FILE
  32. }

  33. // Without /f - show confirmation
  34. MESS Warning!\n\nDisk: %&diskNum% (\\.\PhysicalDrive%&diskNum%)\nStart: %&startNum%\nSectors: %&count%\nBytes: %&bytes%\n\nThis operation is IRREVERSIBLE!\n\nConfirm?@Confirm#YN*12000
  35. FIND $%YESNO%<>YES, EXIT FILE

  36. // Erase sectors
  37. PUTF -dd -bs=512 -count=%&count% \\.\PhysicalDrive%&diskNum%,%&offset%,zero

  38. // Exit without additional message
  39. EXIT FILE
复制代码

这样对不对
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
  1. #code=65001
  2. ENVI^ EnviMode=1
  3. ENVI^ ForceLocal=1
  4. SET$ &NL=0d 0a

  5. // 检查管理员权限
  6. ENVI ?&isAdmin=ISADMIN
  7. IFEX $%&isAdmin%<>1,
  8. {
  9.     MESS 请以管理员身份运行本程序!\n\n右键点击 PECMD.exe -> 以管理员身份运行@错误#OK
  10.     EXIT FILE
  11. }

  12. // 全局变量
  13. SET &SELECTED_DISK_NUM=-1

  14. CALL @MainWindow

  15. _SUB MainWindow,W600H550,磁盘扇区清除工具,,#1,,-size
  16.     ENVI @this.Font=10:Microsoft YaHei
  17.    
  18.     // ========== 磁盘选择 ==========
  19.     GROU GrpDisk,L20T20W560H110,磁盘选择
  20.    
  21.     LABE LblDisk,L35T50W80H25,磁盘列表:,,0x000000,10
  22.     LIST ListDisk,L120T47W350H150,CALL OnDiskSelect
  23.     ITEM BtnRefresh,L480T47W80H25,刷新,CALL RefreshDiskList
  24.    
  25.     LABE LblDiskInfo,L35T75W530H25,,,0x008000,9
  26.    
  27.     // ========== 扇区范围 ==========
  28.     GROU GrpSector,L20T140W560H110,扇区范围 (注意: 0号扇区是MBR/引导区!)
  29.    
  30.     LABE LblStart,L35T168W80H25,起始扇区:,,0x000000,10
  31.     EDIT EdtStart,L120T165W100H25,0,,0x200,10
  32.    
  33.     LABE LblEnd,L250T168W80H25,结束扇区:,,0x000000,10
  34.     EDIT EdtEnd,L335T165W100H25,100,,0x200,10
  35.    
  36.     LABE LblTotal,L460T168W100H25,共0个扇区,,0x808080,9
  37.    
  38.     LABE LblSectorHint,L35T200W500H25,,,0x808080,9
  39.    
  40.     // ========== 操作按钮 ==========
  41.     GROU GrpAction,L20T260W560H150,操作选项
  42.    
  43.     ITEM BtnZeroFill,L40T290W140H40,清空指定扇区(填0),CALL ZeroFillSectors
  44.     ITEM BtnReadSector,L200T290W140H40,读取扇区,CALL ReadSectorInfo
  45.     ITEM BtnVerifyZero,L360T290W140H40,验证是否已清0,CALL VerifyZero
  46.    
  47.     ITEM BtnClearMBR,L40T345W140H40,清空MBR(前63扇区),CALL ClearMBR
  48.     ITEM BtnClearGPT,L200T345W140H40,清空GPT表(前2MB),CALL ClearGPT
  49.     CHEK ChkForce,L360T355W120H25,强制清空(不确认),,0
  50.    
  51.     // ========== 操作日志 ==========
  52.     GROU GrpLog,L20T420W560H90,操作日志
  53.     MEMO MemoLog,L35T435W530H65,,,0x24,9
  54.    
  55.     // 关闭按钮
  56.     ITEM BtnClose,L490T490W70H25,关闭,KILL \
  57.    
  58.     CALL RefreshDiskList
  59. _END

  60. // ========== 获取磁盘列表 (参考 ListDiskVol 的方式) ==========
  61. _SUB RefreshDiskList
  62.     ENVI @LblStatus=正在扫描磁盘...
  63.     CALL AddLog 正在扫描物理磁盘...
  64.    
  65.     // 获取全部磁盘
  66.     PART list disk,&&全部磁盘
  67.     CALL AddLog 磁盘列表: %&全部磁盘%
  68.    
  69.     ENVI &&磁盘LIST=
  70.     SET &D1=
  71.    
  72.     FORX * %&全部磁盘%,&磁盘,
  73.     {
  74.         CALC #&diskNum=%&磁盘%
  75.         
  76.         // 获取磁盘大小
  77.         PART list disk %&diskNum%,&&磁盘信息
  78.         MSTR &&size=<2>%&磁盘信息%
  79.         
  80.         // 格式化大小
  81.         CALC &sizeGB=%&size% / 1073741824#2
  82.         CALC &sizeMB=%&size% / 1048576#1
  83.         
  84.         SET &sizeShow=%&sizeMB% MB
  85.         IFEX $%&sizeGB%>=1, SET sizeShow=%&sizeGB% GB
  86.         
  87.         // 获取磁盘上的盘符
  88.         SET &driveLetters=
  89.         FDRV &Drvs=*:
  90.         FORX * %&Drvs%,&D,
  91.         {
  92.             PART list drv %&D%,&&V
  93.             MSTR &&hd=<9>%&V%
  94.             FIND $%&hd%=%&diskNum%,
  95.             {
  96.                 FIND $%&driveLetters%=, SET driveLetters=%&D%! SET driveLetters=%&driveLetters% %&D%
  97.             }
  98.         }
  99.         FIND $%&driveLetters%=, SET driveLetters=无盘符
  100.         
  101.         // 构建显示字符串
  102.         SET &display=磁盘%&diskNum% %&sizeShow% [%&driveLetters%]
  103.         
  104.         CALL AddLog 添加: %&display%
  105.         
  106.         FIND $%&磁盘LIST%=,
  107.         {
  108.             SET &磁盘LIST=%&display%
  109.             SET &D1=%&display%
  110.         }
  111.         {
  112.             SET &磁盘LIST=%&磁盘LIST%|%&display%
  113.         }
  114.     }
  115.    
  116.     FIND $%&磁盘LIST%=,
  117.     {
  118.         SET &磁盘LIST=无可用磁盘
  119.         CALL AddLog 错误: 未找到可用磁盘
  120.     }
  121.    
  122.     ENVI @ListDisk.VAL=%&磁盘LIST%
  123.     FIND $%&D1%<>, ENVI @ListDisk.SEL=%&D1%
  124.    
  125.     ENVI @LblStatus=就绪
  126.     CALL OnDiskSelect
  127. _END

  128. // ========== 磁盘选择事件 ==========
  129. _SUB OnDiskSelect
  130.     SET &diskName=%ListDisk%
  131.     FIND $%&diskName%=, EXIT _SUB
  132.     FIND $%&diskName%=无可用磁盘, EXIT _SUB
  133.    
  134.     // 提取磁盘号
  135.     SED &diskNum=0,^磁盘,,%&diskName%
  136.     SED &diskNum=0, .*,,%&diskNum%
  137.     CALC #&diskNum=%&diskNum%
  138.    
  139.     SET &SELECTED_DISK_NUM=%&diskNum%
  140.     ENVI @LblDiskInfo=已选择: %&diskName% (\\.\PhysicalDrive%&diskNum%)
  141.    
  142.     // 获取磁盘总容量和总扇区数
  143.     PART list disk %&diskNum%,&&info
  144.     MSTR &&size=<2>%&info%
  145.    
  146.     CALC &sectors=%&size% / 512#0
  147.     CALC &sizeMB=%&size% / 1048576#1
  148.     CALC &sizeGB=%&size% / 1073741824#2
  149.    
  150.     ENVI @LblSectorHint=总容量: %&sizeGB% GB (%&sizeMB% MB), 共 %&sectors% 个扇区
  151.     CALL UpdateSectorInfo
  152. _END

  153. // ========== 更新扇区统计 ==========
  154. _SUB UpdateSectorInfo
  155.     IFEX $%&SELECTED_DISK_NUM%<0, EXIT _SUB
  156.    
  157.     ENVI @EdtStart.Val=?;&startStr
  158.     ENVI @EdtEnd.Val=?;&endStr
  159.    
  160.     SED &startNum=0,[^0-9],,%&startStr%
  161.     SED &endNum=0,[^0-9],,%&endStr%
  162.    
  163.     CALC #&startVal=%&startNum%
  164.     CALC #&endVal=%&endNum%
  165.    
  166.     IFEX $%&endVal%>%&startVal%,
  167.     {
  168.         CALC &total=%&endVal% - %&startVal% + 1
  169.         ENVI @LblTotal=共%&total%个扇区
  170.     }
  171.     {
  172.         IFEX $%&endVal%=%&startVal%,
  173.         {
  174.             ENVI @LblTotal=共1个扇区
  175.         }
  176.         {
  177.             ENVI @LblTotal=共0个扇区
  178.         }
  179.     }
  180. _END

  181. // 监听编辑框变化
  182. ENVI @EdtStart.MSG=0x0200: CALL UpdateSectorInfo
  183. ENVI @EdtEnd.MSG=0x0200: CALL UpdateSectorInfo

  184. _SUB AddLog
  185.     SET &msg=%~1
  186.     DATE -space &now
  187.     ENVI @MemoLog=%&now% %&msg%\n%MemoLog%
  188. _END

  189. // ========== 清空指定扇区 ==========
  190. _SUB ZeroFillSectors
  191.     IFEX $%&SELECTED_DISK_NUM%<0, TEAM MESS 请先选择磁盘@错误#OK| EXIT _SUB
  192.    
  193.     ENVI @EdtStart.Val=?;&startStr
  194.     ENVI @EdtEnd.Val=?;&endStr
  195.    
  196.     SED &start=0,[^0-9],,%&startStr%
  197.     SED &end=0,[^0-9],,%&endStr%
  198.    
  199.     CALC #&startVal=%&start%
  200.     CALC #&endVal=%&end%
  201.    
  202.     IFEX $%&startVal%<0, TEAM MESS 起始扇区无效@错误#OK| EXIT _SUB
  203.     IFEX $%&endVal%<=0, TEAM MESS 结束扇区无效@错误#OK| EXIT _SUB
  204.     IFEX $%&endVal%<%&startVal%, TEAM MESS 结束扇区必须大于起始扇区@错误#OK| EXIT _SUB
  205.    
  206.     CALC &count=%&endVal% - %&startVal% + 1
  207.     CALC &sizeKB=%&count% * 512 / 1024#1
  208.    
  209.     ENVI @ChkForce.Val=?;&force
  210.    
  211.     IFEX $%&force%=0,
  212.     {
  213.         MESS 警告!\n\n磁盘: %&SELECTED_DISK_NUM% (\\.\PhysicalDrive%&SELECTED_DISK_NUM%)\n起始扇区: %&startVal%\n结束扇区: %&endVal%\n共 %&count% 个扇区 (%&sizeKB% KB)\n\n此操作将永久清除数据!\n\n确认执行?@危险操作#YN*10000$N
  214.         FIND $%YESNO%<>YES, EXIT _SUB
  215.     }
  216.    
  217.     CALL AddLog 开始清空磁盘%&SELECTED_DISK_NUM% 扇区 %&startVal% - %&endVal%
  218.    
  219.     SET &device=\\.\PhysicalDrive%&SELECTED_DISK_NUM%
  220.     CALC &offset=%&startVal% * 512
  221.    
  222.     EXEC =!cmd.exe /c "PUTF -dd -bs=512 -count=%&count% "%&device%",%&offset%,zero"
  223.    
  224.     WAIT 3000
  225.    
  226.     CALL AddLog 完成: 已清空 %&count% 个扇区
  227.     MESS 清空完成!\n\n磁盘: %&SELECTED_DISK_NUM%\n扇区: %&startVal% - %&endVal%\n共 %&count% 个扇区已填0@完成#OK
  228. _END

  229. // ========== 读取扇区 (参考 GETALLMBR 的方式) ==========
  230. _SUB ReadSectorInfo
  231.     IFEX $%&SELECTED_DISK_NUM%<0, TEAM MESS 请先选择磁盘@错误#OK| EXIT _SUB
  232.    
  233.     ENVI @EdtStart.Val=?;&startStr
  234.     SED &sector=0,[^0-9],,%&startStr%
  235.     CALC #&sector=%&sector%
  236.    
  237.     IFEX $%&sector%<0, TEAM MESS 起始扇区无效@错误#OK| EXIT _SUB
  238.    
  239.     CALL AddLog 读取磁盘%&SELECTED_DISK_NUM% 扇区 %&sector%
  240.    
  241.     SET &device=\\.\PhysicalDrive%&SELECTED_DISK_NUM%
  242.     CALC &offset=%&sector% * 512
  243.    
  244.     // 读取512字节
  245.     SET &tempFile=%TEMP%\sector_%RANDOM%.bin
  246.     GETF %&device%,%&offset%#512,&rawData
  247.    
  248.     IFEX $%&rawData%<>,
  249.     {
  250.         // 转换为十六进制显示
  251.         SET &hexData=
  252.         FORX * %&rawData%,&&byte,
  253.         {
  254.             FIND $%&hexData%=, SET &hexData=%&byte%! SET &hexData=%&hexData% %&byte%
  255.             STRL &len=%&hexData%
  256.             IFEX $%&len%>192, EXIT -
  257.         }
  258.         
  259.         // 检查是否全0
  260.         SET &isZero=是
  261.         SED &check=0,00,,%&hexData%
  262.         FIND $%&check%<>, SET &isZero=否
  263.         
  264.         MESS 扇区信息\n\n磁盘: %&SELECTED_DISK_NUM%\n扇区号: %&sector%\n偏移: %&offset% 字节\n\n前128字节(十六进制):\n%&hexData%\n\n全0: %&isZero%@读取结果#OK
  265.         
  266.         CALL AddLog 完成: 扇区%&sector% 前128字节已读取, 全0=%&isZero%
  267.     }
  268.     {
  269.         CALL AddLog 错误: 无法读取扇区%&sector%
  270.         MESS 无法读取扇区 %&sector%!\n\n可能原因:\n1. 扇区超出磁盘范围\n2. 权限不足@错误#OK
  271.     }
  272. _END

  273. // ========== 验证是否已清0 ==========
  274. _SUB VerifyZero
  275.     IFEX $%&SELECTED_DISK_NUM%<0, TEAM MESS 请先选择磁盘@错误#OK| EXIT _SUB
  276.    
  277.     ENVI @EdtStart.Val=?;&startStr
  278.     ENVI @EdtEnd.Val=?;&endStr
  279.    
  280.     SED &start=0,[^0-9],,%&startStr%
  281.     SED &end=0,[^0-9],,%&endStr%
  282.    
  283.     CALC #&startVal=%&start%
  284.     CALC #&endVal=%&end%
  285.    
  286.     IFEX $%&startVal%<0, TEAM MESS 起始扇区无效@错误#OK| EXIT _SUB
  287.     IFEX $%&endVal%<=0, TEAM MESS 结束扇区无效@错误#OK| EXIT _SUB
  288.     IFEX $%&endVal%<%&startVal%, TEAM MESS 结束扇区必须大于起始扇区@错误#OK| EXIT _SUB
  289.    
  290.     CALL AddLog 验证磁盘%&SELECTED_DISK_NUM% 扇区 %&startVal% - %&endVal%...
  291.    
  292.     SET &device=\\.\PhysicalDrive%&SELECTED_DISK_NUM%
  293.     SET &allZero=1
  294.     SET &nonZeroList=
  295.    
  296.     // 检查前5个扇区(避免检查太多)
  297.     CALC &maxCheck=%&startVal%+4
  298.     IFEX $%&maxCheck%>%&endVal%, SET &maxCheck=%&endVal%
  299.    
  300.     FORX * %&startVal% %&maxCheck%,&&s,
  301.     {
  302.         CALC &offset=%&s% * 512
  303.         GETF %&device%,%&offset%#64,&hexData
  304.         SED &check=0,00,,%&hexData%
  305.         FIND $%&check%<>,
  306.         {
  307.             SET &allZero=0
  308.             SET &nonZeroList=%&nonZeroList% %&s%
  309.         }
  310.     }
  311.    
  312.     IFEX $%&allZero%=1,
  313.     {
  314.         CALL AddLog 验证通过: 已全部清0
  315.         MESS 验证通过!\n\n磁盘%&SELECTED_DISK_NUM%\n扇区 %&startVal% - %&endVal%\n已全部清0。@验证结果#OK
  316.     }
  317.     {
  318.         CALL AddLog 验证失败: 以下扇区非0 -> %&nonZeroList%
  319.         MESS 验证失败!\n\n磁盘%&SELECTED_DISK_NUM%\n以下扇区存在非0数据: %&nonZeroList%@验证结果#OK
  320.     }
  321. _END

  322. // ========== 清空MBR (前63扇区) ==========
  323. _SUB ClearMBR
  324.     IFEX $%&SELECTED_DISK_NUM%<0, TEAM MESS 请先选择磁盘@错误#OK| EXIT _SUB
  325.    
  326.     ENVI @ChkForce.Val=?;&force
  327.    
  328.     IFEX $%&force%=0,
  329.     {
  330.         MESS 警告!\n\n磁盘: %&SELECTED_DISK_NUM%\n操作: 清空MBR (前63个扇区)\n\n这将删除磁盘的引导记录和分区表!\n磁盘将变成"未初始化"状态!\n\n确认执行?@危险操作#YN*10000$N
  331.         FIND $%YESNO%<>YES, EXIT _SUB
  332.     }
  333.    
  334.     CALL AddLog 开始清空磁盘%&SELECTED_DISK_NUM% MBR (前63扇区)
  335.    
  336.     SET &device=\\.\PhysicalDrive%&SELECTED_DISK_NUM%
  337.     EXEC =!cmd.exe /c "PUTF -dd -bs=512 -count=63 "%&device%",0,zero"
  338.    
  339.     WAIT 3000
  340.    
  341.     // 通知系统更新
  342.     PART update %&SELECTED_DISK_NUM%
  343.    
  344.     CALL AddLog 完成: 已清空MBR
  345.     MESS MBR清空完成!\n\n磁盘: %&SELECTED_DISK_NUM%\n前63个扇区已被清空。\n\n磁盘现在显示为"未初始化"。@完成#OK
  346. _END

  347. // ========== 清空GPT表 (前2MB) ==========
  348. _SUB ClearGPT
  349.     IFEX $%&SELECTED_DISK_NUM%<0, TEAM MESS 请先选择磁盘@错误#OK| EXIT _SUB
  350.    
  351.     ENVI @ChkForce.Val=?;&force
  352.    
  353.     IFEX $%&force%=0,
  354.     {
  355.         MESS 警告!\n\n磁盘: %&SELECTED_DISK_NUM%\n操作: 清空GPT表 (前2MB)\n\n这将删除磁盘的GPT分区表!\n磁盘将变成"未初始化"状态!\n\n确认执行?@危险操作#YN*10000$N
  356.         FIND $%YESNO%<>YES, EXIT _SUB
  357.     }
  358.    
  359.     CALL AddLog 开始清空磁盘%&SELECTED_DISK_NUM% GPT表 (前2MB)
  360.    
  361.     SET &device=\\.\PhysicalDrive%&SELECTED_DISK_NUM%
  362.     // 清空前4096个扇区 (2MB = 4096扇区)
  363.     EXEC =!cmd.exe /c "PUTF -dd -bs=512 -count=4096 "%&device%",0,zero"
  364.    
  365.     WAIT 3000
  366.    
  367.     // 通知系统更新
  368.     PART update %&SELECTED_DISK_NUM%
  369.    
  370.     CALL AddLog 完成: 已清空GPT表
  371.     MESS GPT表清空完成!\n\n磁盘: %&SELECTED_DISK_NUM%\n前2MB已被清空。\n\n磁盘现在显示为"未初始化"。@完成#OK
  372. _END
复制代码




本来是想弄成gui程序,双击运行,选择处理的磁盘,输入要清空的扇区开始和结束位置清空。
如果加参数运作就不弹出界面,直接按磁盘和扇区数开始清空
可是ai对pecmd编写代码一直有问题,就上面的,功能不正常。
快照46515.png

所以这部分都去掉了,只做了一个命令行程序
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
彻底删除数据的好工具。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-6 10:30

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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