UEFI引导分区盘符提取源码
本帖最后由 xztpc 于 2024-10-4 22:13 编辑玩了一年的易语言,因为易语言不能编译64位程序,今年硬着头皮转战AU3,去年实际上就接触了,看着满屏的英文没敢涉足!现在玩了半个月了!稍微有点进步!现在主要是研究引导自动修复!来抛砖引玉,也希望能得到大家指点!
#include <File.au3>
tiquefi()
Func tiquefi()
FileInstall("cx.exe", @ScriptDir & "\cx.exe")
RunWait(@ComSpec & " /C " & @ScriptDir & "\cx.exe -mohong >" & @ScriptDir & "\Part.Txt", @ScriptDir, @SW_HIDE)
$filePath = @ScriptDir & "\Part.Txt"
$searchString = "EFI"
If FileExists($filePath) Then
$fileHandle = FileOpen($filePath, 0)
Local $lineNumber = 0
While 1
$line = FileReadLine($fileHandle, $lineNumber)
If @error = -1 Then ExitLoop
$lineNumber += 1
Local $pos = StringInStr($line, $searchString)
If $pos > 0 Then
$EfiPanfu = StringRight(StringLeft($line, 5), 1)
MsgBox(0, "找到引导分区", 'EFI分区盘符是:' & $EfiPanfu)
EndIf
WEnd
EndIf
EndFunc;==>提取EFI分区盘符
FileInstall("cx.exe", @TempDir & "\cx.exe")
RunWait(@ComSpec & " /C " & @TempDir & "\cx.exe -mohong >" & @ScriptDir & "\Part.Txt", @ScriptDir, @SW_HIDE)
Local $Text = FileRead(@ScriptDir & "\Part.Txt")
Local $aDrv = StringRegExp($Text, '(?m)^.+?(\w:)[^\v]+?EFI', 3)
If IsArray($aDrv) Then MsgBox(0, "找到引导分区", 'EFI分区盘符是:' & $aDrv)
玩玩Av3再看易语言会简单点 haijie1223 发表于 2024-10-6 12:08
谢谢!这样简单多了! xztpc 发表于 2024-10-17 12:30
谢谢!这样简单多了!
这样吧,这样没有临时文件产生:
tiquefi()
Func tiquefi()
FileInstall("cx.exe", @TempDir & "\cx.exe")
Local $ipid= Run(@ComSpec & " /C " & @TempDir & "\cx.exe -mohong", @ScriptDir, @SW_HIDE,15)
ProcessWaitClose($ipid)
Local $aDrv = StringRegExp(StdoutRead($ipid), '(?m)^.+?(\w:)[^\v]+?EFI', 3)
If IsArray($aDrv) Then MsgBox(0, "找到引导分区", 'EFI分区盘符是:' & $aDrv)
EndFunc ;==>tiquefi
本帖最后由 xztpc 于 2024-10-18 08:50 编辑
但是我加上这一句:$aDrv变量就出不来了Func tiquefi()
FileInstall("cx.exe", @TempDir & "\cx.exe")
Local $ipid= Run(@ComSpec & " /C " & @TempDir & "\cx.exe -mohong", @ScriptDir, @SW_HIDE,15)
ProcessWaitClose($ipid)
Local $aDrv = StringRegExp(StdoutRead($ipid), '(?m)^.+?(\w:)[^\v]+?EFI', 3)
If IsArray($aDrv) Then RunWait(@ComSpec & " /C bcdboot.exe C:\windows /s " & $aDrv & " /f UEFI /l zh-cn", @ScriptDir, @SW_HIDE)
EndFunc ;==>tiquefi
本帖最后由 xztpc 于 2024-10-18 10:24 编辑
haijie1223 发表于 2024-10-17 19:06
已处理!是我自己马虎了忘记加:,见笑了!
把信息框换成cmd命令,就读不出$aDrv变量了RunWait(@ComSpec & " /C bcdboot.exe C:\windows /s " & $aDrv & " /f UEFI /l zh-cn", @ScriptDir, @SW_HIDE) xztpc 发表于 2024-10-18 08:57
把信息框换成cmd命令,就读不出$aDrv变量了
这样试试$aDrv haijie1223 发表于 2024-10-18 14:29
这样试试$aDrv
谢谢!原先只是写$aDrv没带上,导致失败,现在$aDrv这样写就好了!刚玩AU3小白!见笑了!
页:
[1]