Salute,
ich möchte gern .reg Dateien auslesen und in .au3, d.h. in ein AutoIt Script konvertieren.![]()
Das klappt mit meiner "test.reg" Datei auch schon ganz gut, aber wenn ich nun eine andere .reg Datei konvertieren möchte, dann wird nur ein leeres "RegScript.au3" erstellt...:irre:
Was mache ich falsch...?
Bin noch Anfänger..., aber hier mal das Script:
Spoiler anzeigen
; GUI Reg2Au3 Converter
Global $regsource
Global $regdest
#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]GuiCreate("Reg2Au3 Converter", 392, 316,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
[/autoit] [autoit][/autoit] [autoit]$Group_1 = GuiCtrlCreateGroup("", 10, 20, 370, 150)
$Label_1 = GuiCtrlCreateLabel("Quelldatei auswählen", 30, 50, 140, 20)
$Input_1 = GuiCtrlCreateInput("", 30, 70, 200, 20)
$Button_1 = GuiCtrlCreateButton("&Durchsuchen...", 260, 70, 100, 20)
$Label_2 = GuiCtrlCreateLabel("Zieldatei auswählen", 30, 110, 120, 20)
$Input_2 = GuiCtrlCreateInput("", 30, 130, 200, 20)
$Button_2 = GuiCtrlCreateButton("&Durchsuchen...", 260, 130, 100, 20)
$Button_OK = GuiCtrlCreateButton("&OK", 280, 280, 80, 20)
[/autoit] [autoit][/autoit] [autoit]GuiSetState()
While 1
$msg = GuiGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $Button_1
$regsource = FileOpenDialog("Registrierungsdatei wählen", @MyDocumentsDir, "(*.reg)", 1+4)
ControlSetText("Reg2Au3 Converter", "", $Input_1, $regsource)
Case $msg = $Button_2
$regdest = FileSaveDialog( "Zielpfad wählen", @MyDocumentsDir, "Scripts (*.aut;*.au3)", 2, "RegScript.au3")
ControlSetText("Reg2Au3 Converter", "", $Input_2, $regdest)
; option 2 = dialog remains until valid path/file selected
If @error Then MsgBox(4096,"","Save cancelled.")
Case $msg = $Button_OK
Register()
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case Else
;;;
EndSelect
WEnd
Exit
[/autoit] [autoit][/autoit] [autoit]; Funktion .reg zu .au3
Func Register()
Local $file = FileOpen($regsource, 0)
Local $RegScript = FileOpen($regdest, 2) ; which is similar to 2 + 8 (erase + create dir)
Local $line, $keyname, $value, $value1, $value2
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open .reg file.")
Exit
ElseIf $RegScript = -1 Then
MsgBox(0, "Error", "Unable to open RegScript.au3.")
Exit
Else
If $file = -1 And $RegScript = -1 Then
MsgBox(0, "Error", "Unable to open any file.")
Exit
EndIf
EndIf
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
Local $sPattern, $vResult, $clip, $clip1
$sPattern = "[][]"
$vResult = StringRegExp($line, $sPattern, 1)
If @extended Then
$keyname = StringRegExpReplace($line, $sPattern, '"')
FileWriteLine($RegScript, "RegWrite(" & $keyname & ")")
EndIf
; Success. Pattern matched. $vResult matches @Extended
$sPattern = "(@=)"
$vResult = StringRegExp($line, $sPattern, 1)
If @extended Then
$clip = StringRegExpReplace($line, $sPattern, "")
$value = StringRegExpReplace($clip, "\\\\", "\\", 0)
FileWriteLine($RegScript, "RegWrite(" & $keyname & ', "", "REG_SZ", ' & $value & ")")
EndIf
$sPattern = '("=")'
$vResult = StringRegExp($line, $sPattern, 1)
If @extended Then
$clip1 = StringRegExpReplace($line, "=", ', "REG_SZ", ')
$value1 = StringRegExpReplace($clip1, "\\\\", "\\", 0)
FileWriteLine($RegScript, "RegWrite(" & $keyname & "," & $value1 & ")")
EndIf
$sPattern = "(=dword:)"
$vResult = StringRegExp($line, $sPattern, 1)
If @extended Then
$value2 = StringRegExpReplace($line, "=dword:", ', "REG_DWORD", "')
FileWriteLine($RegScript, "RegWrite(" & $keyname & $value2 & '")')
EndIf
WEnd
FileClose($file)
FileClose($RegScript)
EndFunc
[/autoit]