AutoIt Hilfe-Beispiel und Auto3Lib Dateien verdeutschen

    • Offizieller Beitrag

    Hallo

    Ich habe vor ca 1,5 Jahren ein Script geschrieben, was automatisch die AutoIt Hilfe beispiel Dateien nachguckt ob ein Englisches Wort drin ist (z.B. Untitled - Notepad) und das in ein Deutsches Wort ersetzt (z.B. Unbenannt - Editor)

    Hab es jetzt noch etwas umgeschrieben, und benutze dies bei Jeder AutoIt Erneuerung.

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $AutoItInstallDir, $FileList, $Attrib = False, $WorkSteps = 2, $ProgBuf = 0

    [/autoit] [autoit][/autoit] [autoit]

    Dim $English[6] = ['program files', 'Untitled', ' - Notepad', 'My Computer', 'Windows Internet Explorer', 'My Documents' ]
    Dim $German[6] = ['Programme', 'Unbenannt', ' - Editor', 'Arbeitsplatz', 'Microsoft Internet Explorer', 'Eigene Dateien' ]

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $maingui = GUICreate("English2German - By GtaSpider", 284, 104, 193, 125, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    GUISetBkColor(0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Progress1 = GUICtrlCreateProgress(8, 16, 270, 17, $PBS_SMOOTH)
    GUICtrlSetColor(-1, 0xffaa00)
    GUICtrlSetBkColor(-1, 0xcc7700)
    $Progress2 = GUICtrlCreateProgress(8, 40, 270, 17, $PBS_SMOOTH)
    GUICtrlSetColor(-1, 0xffaa00)
    GUICtrlSetBkColor(-1, 0xcc7700)
    $ProgLabel1 = GUICtrlCreateLabel("100%", 128, 17, 30, 15, $SS_CENTER)
    GUICtrlSetBkColor(-1, -2)
    $ProgLabel2 = GUICtrlCreateLabel("100%", 128, 41, 30, 15, $SS_CENTER)
    GUICtrlSetBkColor(-1, -2)
    $DatStatLabel = GUICtrlCreateLabel("Bitte Warten...", 8, 64, 270, 15)
    GUICtrlSetColor(-1, 0xffaa00)
    $DirStatLabel = GUICtrlCreateLabel("", 8, 80, 270, 15)
    GUICtrlSetColor(-1, 0xffaa00)

    [/autoit] [autoit][/autoit] [autoit]

    $AutoItInstallDir = FileSelectFolder("Gebe den Ordner an wo AutoIt installiert ist.", '', 6, RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", 'InstallDir'))
    If @error Then Exit
    If MsgBox(68, "J/N?", "Wollen Sie den Attribut 'readonly' der Dateien entfernen?") = 6 Then $Attrib = True
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _Engl2Ger($AutoItInstallDir & "\Examples\Helpfile", "Helpfile")
    _Engl2Ger($AutoItInstallDir & "\Auto3Lib", "Auto3Lib", True)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Engl2Ger($sPath2Trans, $sNameOfPath, $iRec = False)
    Local $i, $FileList, $FiRe

    If Not FileExists($sPath2Trans) Then Return MsgBox(48, "", $sPath2Trans & " existiert nicht! Überspringe " & $sNameOfPath) - 1


    $FileList = _FileListToArrayEx($sPath2Trans, "*.au3", 0, '', $iRec)
    _SetProg($ProgBuf, '', $sNameOfPath)

    [/autoit] [autoit][/autoit] [autoit]

    FileChangeDir($sPath2Trans)

    For $i = 1 To $FileList[0]
    $FileList[$i] = StringTrimLeft($FileList[$i], StringLen($sPath2Trans) + 1)
    _SetProg(Round($i * 100 / $FileList[0]), $FileList[$i])

    FileSetAttrib($FileList[$i], "-r")
    $FiRe = FileRead($FileList[$i])

    For $i2 = 0 To UBound($English) - 1
    If StringInStr($FiRe, $English[$i2]) Then _ReplaceStringInFile($FileList[$i], $English[$i2], $German[$i2])
    Next

    If Not $Attrib Then FileSetAttrib($FileList[$i], "+r")
    Next
    $ProgBuf += (100 / $WorkSteps)
    EndFunc ;==>_Engl2Ger

    [/autoit] [autoit][/autoit] [autoit]

    Func _SetProg($iProz, $sDatText = '', $sDirText = '')
    GUICtrlSetData($Progress1, $iProz)
    GUICtrlSetData($ProgLabel1, $iProz & "%")
    GUICtrlSetData($Progress2, $ProgBuf + ($iProz / $WorkSteps))
    GUICtrlSetData($ProgLabel2, Round($ProgBuf + ($iProz / $WorkSteps)) & "%")
    If $sDatText <> '' Then GUICtrlSetData($DatStatLabel, "Bearbeite Datei: " & $sDatText)
    If $sDirText <> '' Then GUICtrlSetData($DirStatLabel, "Bearbeite Ordner: " & $sDirText)
    EndFunc ;==>_SetProg

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: lists all or preferred files and or folders in a specified path (Similar to using Dir with the /B Switch)
    ; Syntax: _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '')
    ; Parameter(s): $sPath = Path to generate filelist for
    ; $sFilter = The filter to use. Search the Autoit3 manual for the word "WildCards" For details, support now for multiple searches
    ; Example *.exe; *.txt will find all .exe and .txt files
    ; $iFlag = determines weather to return file or folders or both.
    ; $sExclude = exclude a file from the list by all or part of its name
    ; Example: Unins* will remove all files/folders that start with Unins
    ; $iFlag=0(Default) Return both files and folders
    ; $iFlag=1 Return files Only
    ; $iFlag=2 Return Folders Only
    ;
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns an array containing the list of files and folders in the specified path
    ; On Failure - Returns the an empty string "" if no files are found and sets @Error on errors
    ; @Error or @extended = 1 Path not found or invalid
    ; @Error or @extended = 2 Invalid $sFilter or Invalid $sExclude
    ; @Error or @extended = 3 Invalid $iFlag
    ; @Error or @extended = 4 No File(s) Found
    ;
    ; Author(s): SmOke_N
    ; Note(s): The array returned is one-dimensional and is made up as follows:
    ; $array[0] = Number of Files\Folders returned
    ; $array[1] = 1st File\Folder
    ; $array[2] = 2nd File\Folder
    ; $array[3] = 3rd File\Folder
    ; $array[n] = nth File\Folder
    ;
    ; All files are written to a "reserved" .tmp file (Thanks to gafrost) for the example
    ; The Reserved file is then read into an array, then deleted
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '', $iRecurse = False)
    If Not FileExists($sPath) Then Return SetError(1, 1, '')
    If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
    If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
    If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
    Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|' ]
    $sFilter = StringRegExpReplace($sFilter, '\s*;\s*', ';')
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    For $iCC = 0 To 5
    If StringInStr($sFilter, $aBadChar[$iCC]) Or _
    StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
    Next
    If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
    Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
    $sTFolder = $oFSO.GetSpecialFolder (2)
    Local $hOutFile = @TempDir & $oFSO.GetTempName
    If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
    Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead, $sHoldSplit
    For $iCC = 1 To $aSplit[0]
    If StringStripWS($aSplit[$iCC], 8) = '' Then ContinueLoop
    If StringLeft($aSplit[$iCC], 1) = '.' And _
    UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
    $sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
    Next
    $sHoldSplit = StringTrimRight($sHoldSplit, 1)
    If $iRecurse Then
    RunWait(@ComSpec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
    Else
    RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
    EndIf
    $sRead &= FileRead($hOutFile)
    If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
    FileDelete($hOutFile)
    If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '')
    Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF)
    Local $sHold
    For $iCC = 1 To $aFSplit[0]
    If $sExclude And StringLeft($aFSplit[$iCC], _
    StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
    Switch $iFlag
    Case 0
    If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    Case 1
    If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') = 0 And _
    StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') = 0 Then
    If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    EndIf
    Case 2
    If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Or _
    StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') Then
    If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    EndIf
    EndSwitch
    Next
    If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(4, 4, '')
    EndFunc ;==>_FileListToArrayEx

    [/autoit]

    Mfg Spider

    Edit: Habe es jetzt nochmal vollkommen neu Überarbeitet! Kleines Changelog

  • GtaSpider

    Also, das finde ich ne super Sache, nicht für die AutoIt Beispiele,
    aber unbedingt für die Auto3Lib. (Da funktioniert deshalb ja vieles nicht)

    @Daniel W.
    Wer Rechtschreibfehler findet, kann diese behalten.


    greeting
    Frank

    • Offizieller Beitrag

    Hallo

    So, habe jetzt mal eine General überholung gemacht =) Funktioniert jetzt auch mit Auto3Lib. Außerdem kann man jetzt oben beim Scriptstart selber bestimmen welche Englischen Wörter mit Deutschen Wörtern ersetzt werden Sollen. Prinzip ist einfach. $English sind die Englischen Wörtern nach den Gesucht werden sollen, $German sind die Deutschen Wörter die die Englischen ersetzt werden.

    Außerdem ist jetzt eine GUI dabei, und man kann noch selber Ordner hinzufügen, einfach in z.B. Zeile 38 volgendes hinzufügen:

    [autoit]

    _Engl2Ger("C:\Der Ordner", "Der Name des Ordners", True)

    [/autoit]

    Das Letzte True sagt ob Rekursiv gesucht werden soll oder nicht. Wenn True wird Rekursive gesucht wenn nix angegeben wird (False) wird nicht Rekursiv gesucht.

    Mfg Spider