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]