找回密码  加入

AUTOIT CN

搜索
查看: 346|回复: 2

[GUI管理] 麻烦帮我转成AU3代码

[复制链接]
发表于 2018-4-11 14:18:47 | 显示全部楼层 |阅读模式
源程序是BAT,想做一个GUI界面,思路是读取可移动磁盘,然后进行操作,但是这个BAT源码转换过去就变成了必须用RUN或者_RUNDOS来执行,有没有什么更好的办法。
  1. @echo off
  2. title 联想LenovoSmartRecoveryV3.0 快速恢复工具制作工具(三分区)
  3. echo list disk >>list.txt
  4. diskpart /s list.txt
  5. echo.
  6. echo        ############################################################
  7. echo       #                                                            #
  8. echo       #                      提醒!!!!!!                      #
  9. echo       #                     请输入你硬盘ID号                       #
  10. echo       #                 如:“1”、“2”、“3”等                  #
  11. echo       #                                                            #
  12. echo        ############################################################
  13. echo.
  14. set type=
  15. set /P type=        请输入移动硬盘ID号:
  16. del list.txt
  17. echo sel disk %type% >>crepar.txt
  18. echo clean>>crepar.txt
  19. echo conver mbr>>crepar.txt
  20. echo cre par pri size=500>>crepar.txt
  21. echo format quick fs=fat32 label="EFI_x64">>crepar.txt
  22. echo assign letter=S>>crepar.txt
  23. echo active >>crepar.txt
  24. echo cre par pri>>crepar.txt
  25. echo format quick fs=ntfs label="LenovoSR">>crepar.txt
  26. echo assign letter=P>>crepar.txt
  27. echo shrink minimum=500>>crepar.txt
  28. echo cre par pri>>crepar.txt
  29. echo format quick fs=fat32 label="EFI_x86">>crepar.txt
  30. echo assign letter=v>>crepar.txt
  31. echo list par >>crepar.txt
  32. diskpart /s crepar.txt
  33. del crepar.txt
  34. xcopy "%~dp0第一个分区"\*.* S:\ /e /y
  35. xcopy "%~dp0第二个分区"\*.* P:\ /e /y
  36. xcopy "%~dp0第三个分区"\*.* V:\ /e /y
  37. %~dp0BOOTICE.exe /DEVICE=%type%:0 /mbr /install /type=nt60 /quiet
  38. %~dp0BOOTICE.exe /DEVICE=%type%:0 /pbr /install /type=bootmgr /quiet
  39. echo sel disk %type% >>hiddisk.txt
  40. echo list par >>hiddisk.txt
  41. echo sel par 1 >>hiddisk.txt
  42. echo set id=12 override >>hiddisk.txt
  43. echo sel par 3 >>hiddisk.txt
  44. echo set id=12 override >>hiddisk.txt
  45. diskpart /s hiddisk.txt
  46. del hiddisk.txt
  47. echo .
  48. echo .
  49. echo .快恢3.0工具引导制作完毕,请按任意键退出!
  50. echo .
  51. pause
复制代码
发表于 2018-4-11 16:20:10 | 显示全部楼层
你这个不用RUN基本不行。你主个也不是 读取可移动磁盘。
3、4行是列出所有磁盘,让你选择一个。选择一个盘后,后面的都是自动的了。
32行是diskpart执行17-31行创建执行的命令行文件。
这命令包括清除刚选择的磁盘,转换成MBR格式,分区格式化分盘符激活,共分了3个区。
34-38分别复制文件到刚的分区,写入引导
后面的又是用diskpar命令隐藏刚的两个分区。

这只有复制文件au3直接能做到,其它都是用diskpart 命令对磁盘操作的,AU3没办法。
发表于 2018-4-11 18:21:47 | 显示全部楼层
本帖最后由 志艺风云 于 2018-4-12 12:14 编辑

给个WMI读磁盘信息的代码,索引号就是硬盘ID号

  1. #include <array.au3>

  2. Local $objWMIService = ObjGet("winmgmts:\" & @ComputerName & "\ROOT\CIMV2")
  3. ;$colItems = $objWMIService.ExecQuery("select * from Win32_DiskDrive Where MediaType = 'Removable Media'", "WQL", 0x10 + 0x20) ;只有可移动磁盘
  4. $colItems = $objWMIService.ExecQuery("select * from Win32_DiskDrive", "WQL", 0x10 + 0x20)
  5. Local $Array[1][8], $k = 0
  6. If IsObj($colItems) Then
  7.         For $objItem In $colItems
  8.                 ReDim $Array[UBound($Array, 1) + 1][UBound($Array, 2)]
  9.                 $Array[$k][0] = $objItem.Index
  10.                 $Array[$k][1] = $objItem.Model
  11.                 $Array[$k][2] = Round($objItem.Size / 1000 / 1000 / 1000) & " GB"
  12.                 $Array[$k][3] = $objItem.Partitions
  13.                 $Array[$k][4] = $objItem.InterfaceType
  14.                 $Array[$k][5] = $objItem.MediaType
  15.                 $Array[$k][6] = $objItem.DeviceID
  16.                 $Array[$k][7] = $objItem.PNPDeviceID
  17.                
  18.                 $k += 1
  19.         Next
  20.         ReDim $Array[UBound($Array, 1) - 1][UBound($Array, 2)]
  21. EndIf
  22. _ArrayDisplay($Array, "磁盘信息", "", 0, ",", "索引号|型号|容量|分区数|接口类型|媒体类型|设备ID|PNP实例ID")

复制代码
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备15028933号-3 )谷歌 百度

GMT+8, 2018-12-14 08:39 , Processed in 0.082542 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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