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

求一个吧,pecmd脚本,用于删除盘符

[复制链接]
发表于 3 小时前 来自手机 | 显示全部楼层 |阅读模式
看样子检测无效盘符也不太容易实现,光驱、虚拟光驱也是无媒体的,黑mac,Linux分区等等,还是比较复杂的。
只搞个输入框,输入一个或者几个盘符,然后删除就行了,输入空或者点关闭就退出。
对于无效盘符,貌似只有subj可以,别的都无法做到。

点评

找ai搞了几次都没搞成  发表于 3 小时前
发表于 2 小时前 | 显示全部楼层
让AI用C语言写了一个。
编译好的程序在build\x64和build\Win32。
rm_empty.zip (33.84 KB, 下载次数: 2)
  1. 实现一个简易的删除无效盘符的Windows exe (C语言, MSVC v145/VS2026)
  2. 对无效盘符的定义:
  3. 1. 容量为0或无法获取
  4. 2. 无文件系统/文件系统为未知
  5. 程序不得有界面,静默执行即可
复制代码
回复

使用道具 举报

发表于 半小时前 | 显示全部楼层
早些时候写过WCS,但没捐助没刷评论不够等级传不了文件

  1. ENVI 修改时间=2026.06.07

  2. LOCK --exist #盘符管理-%修改时间%,锁定进程
  3. IFEX $%锁定进程%=1,
  4. {
  5.         REGI .HKCU\Software\盘符管理-%修改时间%\CKID,CKID
  6.         ENVI @@Visable=%CKID%:2
  7.         ENVI @@POS=%CKID%:::::::1
  8.         KILL -tree *%&__PID%
  9. }

  10. //适应高DPI
  11. TEAM ENVI ?ver=WinVer|CALC v1=%ver:~,-8%|CALC v2=0x%ver:~3,4%|CALC v3=0x%ver:~7%|ENVI ver=%v1%%v2%
  12. TEAM SCRN -desk ,,,,,,,DPI|ENVI 指定缩放=
  13. IFEX $%ver%<60,ENVI 指定缩放=-scalef
  14. IFEX [$%ver%>=60 & $%ver%<63],TEAM CALL $user32.dll,SetProcessDPIAware|ENVI 指定缩放=-scale:%DPI%
  15. IFEX [$%ver%=63 $%v3%<15063],TEAM CALL $Shcore.dll,SetProcessDpiAwareness,#2|ENVI 指定缩放=-scale:%DPI%
  16. IFEX [$%ver%>=100 & $%v3%>=15063],CALL $user32.dll,SetProcessDpiAwarenessContext,#-5

  17. ENVI 空变量=
  18. ENVI$ TAB=09
  19. CALL 主窗口
  20. REGI HKCU\Software\盘符管理-%修改时间%\!
  21. KILL -tree *%&__PID%
  22. EXIT

  23. _SUB 主窗口,W670H400,盘符管理,,,,,-ntab %指定缩放%
  24.         ENVI @this.Font=:微软雅黑
  25.         LABE+ -trans ,L12T12W640H267
  26.         TABL -font:9:::::::::24 ,L13T13W638H25,+70:序号%TAB%+120:卷标%TAB%+80:盘符%TAB%+90:分区大小%TAB%+80:格式%TAB%+80:分区表%TAB%+90:类型,,0x4000
  27.         TABL -font:9:::::::::24 表格,L13T38W638H240,+70:%TAB%120:%TAB%+80:%TAB%=90:%TAB%+80:%TAB%+80:%TAB%+90:,,0x16000 //0x2000 0x4000 0x10000
  28.         ITEM ,L117T303W100H40,刷新列表,THREAD* 查询磁盘
  29.         ITEM ,L227T303W100H40,卸载盘符,CALL 卸载盘符
  30.         ITEM ,L337T303W100H40,分配盘符,CALL 分配盘符
  31.         ITEM ,L447T303W100H40,更改盘符,CALL 更改盘符
  32.         LOCK #盘符管理-%修改时间%
  33.         REGI $HKCU\Software\盘符管理-%修改时间%\CKID=%&__WINID%
  34.         THREAD* 查询磁盘
  35.         EXEC !=cmd.exe /c ver        //减少内存占用,很神奇
  36. _END

  37. _SUB 查询磁盘
  38.         IFEX $%已选%=1,EXIT!ENVI 已选=1
  39.         ENVI A=0
  40.         //TEAM ENVI @表格.Sel=?选中表格|ENVI @表格.Sel=%选中表格%;0 //刷新不选中
  41.         ENVI @表格.Val=-*
  42.         PART list disk ,所有磁盘
  43.         FORX* %所有磁盘%,循环磁序,
  44.         {
  45.                 PART -iv=10 list disk %循环磁序%,分区表
  46.                 PART list part %循环磁序%,分区序号
  47.                 SED 分区序号=0,[-\@=][1-9][0-9]*[ ]*,,%分区序号%
  48.                 FORX* %分区序号%,循环分序,
  49.                 {
  50.                         PART list part %循环磁序%:%循环分序%,分区信息
  51.                         MSTR 分区序号,类型,活动分区,分区字节,分区路径,分区盘符=<1><2><3><5><7><8>%分区信息%
  52.                         IFEX $%分区序号%=0,EXIT -
  53.                         IFEX $%分区字节%B<1G,TEAM CALC 分区大小=%分区字节%/1M##1|ENVI 分区大小=%分区大小%M
  54.                         IFEX $%分区字节%B>=1G,TEAM CALC 分区大小=%分区字节%/1G##1|ENVI 分区大小=%分区大小%G
  55.                         IFEX $%分区字节%B>=1T,TEAM CALC 分区大小=%分区字节%/1T##1|ENVI 分区大小=%分区大小%T
  56.                         SED 一个盘符=0,:,: ,%分区盘符%
  57.                         MSTR 一个盘符=<1>%一个盘符%
  58.                         CALL 查询分区 "%分区路径%" "%一个盘符%" "%循环磁序%" "%分区序号%"
  59.                         CALL 查询类型 %类型%
  60.                         IFEX [|%分区表%=MBR & $%活动分区%=1],ENVI 分区类型=活动
  61.                         CALC A=%A%+1
  62.                         ENVI @表格.Val=%A%;%循环磁序%:%分区序号%%TAB%%分区卷标%%TAB%%分区盘符%%TAB%%分区大小%%TAB%%分区格式%%TAB%%分区表%%TAB%%分区类型%
  63.                 }
  64.         }
  65.         ENVI 已选=0
  66. _END

  67. _SUB 查询分区
  68.         TEAM ENVI 传分区路径=%~1|ENVI 传分区盘符=%~2|ENVI 传磁盘号=%~3|ENVI 传分区号=%~4
  69.         TEAM ENVI 分区卷标=|ENVI 分区格式=
  70.         FDRV *vol 分区卷标,分区格式=\\?\Volume{%传分区路径%}
  71.         IFEX [|%分区卷标%=%空变量% & |%分区格式%=%空变量%],FDRV *vol 分区卷标,分区格式=%传分区盘符%
  72.         IFEX [|%分区卷标%=%空变量% & |%分区格式%=%空变量%],
  73.         {
  74.                 CALL 查询空闲盘符
  75.                 IFEX |%空闲盘符%=%空变量%,EXIT
  76.                 SHOW & %传磁盘号%:%传分区号%,%空闲盘符%
  77.                 FDRV *vol 分区卷标,分区格式=%空闲盘符%
  78.                 SUBJ &- %空闲盘符%:
  79.                 IFEX %空闲盘符%:\,SUBJ *- %空闲盘符%:
  80.         }
  81. _END

  82. _SUB 查询类型
  83.         TEAM ENVI 传类型=%1|ENVI 分区类型=
  84.         IFEX |%传类型%=C12A7328-F81F-11D2-BA4B-00A0C93EC93B,ENVI 分区类型=ESP
  85.         IFEX |%传类型%=E3C9E316-0B5C-4DB8-817D-F92DF00215AE,ENVI 分区类型=MSR
  86.         IFEX |%传类型%=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC,ENVI 分区类型=WinRE
  87.         IFEX |%传类型%=0FC63DAF-8483-4772-8E79-3D69D8477DE4,ENVI 分区类型=Linux DATA
  88.         IFEX |%传类型%=A19D880F-05FC-4D3B-A006-743F0F84911E,ENVI 分区类型=Linux RAID
  89.         IFEX |%传类型%=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F,ENVI 分区类型=Linux SWAP
  90. _END

  91. _SUB 卸载盘符
  92.         ENVI @表格.Sel=?选中表格
  93.         IFEX $%选中表格%=0,TEAM MESS=+icon5 未选择分区@ 提示|EXIT
  94.         IFEX $%运行%=1,EXIT!ENVI 运行=1
  95.         ENVI @表格.Val=?%选中表格%.1;磁盘分区号
  96.         SED 磁盘分区号=0,:, ,%磁盘分区号%
  97.         MSTR 选中磁序,选中分序=<1><2>%磁盘分区号%
  98.         DISK 确认盘符,%选中磁序%,%选中分序%
  99.         IFEX |%确认盘符%=%空变量%,TEAM ENVI 运行=0|EXIT
  100.         SED 确认盘符=0,:,: ,%确认盘符%
  101.         FORX* %确认盘符%,盘符确认,IFEX |%盘符确认%=%SystemDrive%,TEAM MESS=+icon5 系统盘不可卸载@ 提示|ENVI 运行=0|EXIT _SUB
  102.         SHOW - %选中磁序%:%选中分序%
  103.         ENVI 运行=0
  104.         THREAD* 查询磁盘
  105. _END

  106. _SUB 分配盘符
  107.         ENVI @表格.Sel=?选中表格
  108.         IFEX $%选中表格%=0,TEAM MESS=+icon5 未选择分区@ 提示|EXIT
  109.         IFEX $%运行%=1,EXIT!ENVI 运行=1
  110.         ENVI @表格.Val=?%选中表格%.1;磁盘分区号
  111.         SED 磁盘分区号=0,:, ,%磁盘分区号%
  112.         MSTR 选中磁序,选中分序=<1><2>%磁盘分区号%
  113.         DISK 确认盘符,%选中磁序%,%选中分序%
  114.         IFEX |%确认盘符%<>%空变量%,TEAM ENVI 运行=0|EXIT
  115.         CALL 查询空闲盘符
  116.         IFEX |%空闲盘符%=%空变量%,TEAM MESS=+icon5 没有空闲的盘符可分配@ 提示|ENVI 运行=0|EXIT
  117.         SHOW %选中磁序%:%选中分序%,%空闲盘符%
  118.         ENVI 运行=0
  119.         THREAD* 查询磁盘
  120. _END

  121. _SUB 更改盘符
  122.         ENVI @表格.Sel=?选中表格
  123.         IFEX $%选中表格%=0,TEAM MESS=+icon5 未选择分区@ 提示|EXIT
  124.         IFEX $%运行%=1,EXIT!ENVI 运行=1
  125.         ENVI @表格.Val=?%选中表格%.1;磁盘分区号
  126.         SED 磁盘分区号=0,:, ,%磁盘分区号%
  127.         MSTR 选中磁序,选中分序=<1><2>%磁盘分区号%
  128.         DISK 确认盘符,%选中磁序%,%选中分序%
  129.         SED 确认盘符=0,:,: ,%确认盘符%
  130.         FORX* %确认盘符%,盘符确认,IFEX |%盘符确认%=%SystemDrive%,TEAM MESS=+icon5 系统盘不可更改@ 提示|ENVI 运行=0|EXIT _SUB
  131.         CALL 更改盘符窗口
  132.         ENVI @主窗口.POS=:::::::1
  133.         ENVI 运行=0
  134.         THREAD* 查询磁盘
  135. _END

  136. _SUB 更改盘符窗口,W300H200,更改或分配新的盘符,,,,,-disminb -ntab
  137.         ENVI @this.Font=10:微软雅黑
  138.         ENVI @表格.Val=?%选中表格%.1;磁盘分区号
  139.         ENVI @表格.Val=?%选中表格%.3;表格盘符
  140.         LABE ,L14T10W265H20,为 %磁盘分区号% %表格盘符% 更改或分配新的盘符。
  141.         LABE ,L14T44W100H20,分配以下盘符:
  142.         FDRV *idle 空闲盘符=
  143.         LIST -h 盘符列表,L220T40W60H200,%空闲盘符%,,,0x100
  144.         ITEM ,L150T125W62H30,确定,TEAM CALL 确定|KILL @更改盘符窗口
  145.         ITEM ,L219T125W62H30,取消,KILL @更改盘符窗口
  146.         ENVI C=1
  147.         IFEX A:\,!CALC C=%C%+1
  148.         IFEX B:\,!CALC C=%C%+1
  149.         ENVI @盘符列表.QUERY=%C%;查询盘符
  150.         IFEX |%查询盘符%=%空变量%,ENVI @盘符列表.isel=1!ENVI @盘符列表.isel=%C%
  151. _END

  152. _SUB 确定
  153.         ENVI @表格.Val=?%选中表格%.1;磁盘分区号
  154.         SED 磁盘分区号=0,:, ,%磁盘分区号%
  155.         MSTR 选中磁序,选中分序=<1><2>%磁盘分区号%
  156.         DISK 确认盘符,%选中磁序%,%选中分序%
  157.         IFEX |%确认盘符%<>%空变量%,SHOW - %选中磁序%:%选中分序%
  158.         SHOW %选中磁序%:%选中分序%,%盘符列表%
  159. _END

  160. _SUB 查询空闲盘符
  161.         ENVI 空闲盘符=
  162.         TEAM FDRV -idlec 空闲盘符=*|MSTR 空闲盘符=<1>%空闲盘符% //获取除AB盘外的其它空闲盘符
  163.         IFEX |%空闲盘符%=%空变量%,TEAM FDRV -idle 空闲盘符=*|MSTR 空闲盘符=<1>%空闲盘符% //没有再获取AB盘
  164. _END
复制代码


回复

使用道具 举报

发表于 9 分钟前 | 显示全部楼层
试试楼上2位大佬方法,看能否搞定
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-25 12:32

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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