Archiv der Kategorie: Syntax

autoit Syntax ZIP Archiv

#include <zip.au3>

 

Create Zipfile:

       $hZipFile = _Zip_Create($sZipFilePath)

 

Add Files to Zip-Archive:

       _Zip_AddFile($hZipFile, @ScriptDir & "\" & $sFileName, 1)

 

Unzip ZipArchive:

       _Zip_UnzipAll($PathCurrent & $ZipFile, $UnzipPath, 0) ; FullPathSource, FullPathTargetDir, flag 0: Show Progress, 1: do not

 


 

Lösung mit 7zip

 

FileInstall("7z.exe","C:\Temp\unzip\",0)

FileInstall("7z.dll","C:\Temp\unzip\",0)

 

$UnzipResult = _Unzip($LogFile)

       _LogWrite($LogFile,@ScriptLineNumber," – UnzipResult: " & $UnzipResult[0] & “ : “ & $UnzipResult[1],$Debug,@error,$WaitTime)

 

Func _Unzip($hLogFile,$TargetDir = @ScriptDir)

;~ Func _Unzip($hLogFile,$TargetDir = @ScriptDir)

;        Parameters:        $hLogFile:        Handle der Logdatei vom aufrufenden Programm

;                                $TargetDir:        Zielverzeichnis, Default = aktuelles Verzeichnis

;        Voraussetzungen:        7z.exe und 7z.dll müssen im aktuellen Verzeichnis liegen

;        Rückgabe:        $Result                1: Erfolg

;                                                        0: Fehler und @error <> 0

;                                                        @error        0:        kein Fehler

;                                                                        1:        7z.exe nicht gefunden

;                                                                        2:        7z.dll nicht gefunden

;                                                                        3:        Archiv nicht gefunden

;                                                                        4:        ZielPfad konnte nicht erstellt werden

;                                                                        5:        $ZipDir konnte nicht erstellt werden

; Definitionen ——————-

FileWriteLine($hLogFile," _Unzip > ———- START of Function ———- ")

       FileWriteLine($hLogFile," _Unzip > ——————————— ")

       FileWriteLine($hLogFile," _Unzip > $TargetDir: " & $TargetDir)

       FileWriteLine($hLogFile," _Unzip > ——————————— ")

       Local $ErrText  = ""

       Local $ErrorCode

       Local $Error[2]

       Local $ZipDir        = "C:\Temp\unzip\"

       Local $ErrText0 = "kein Fehler"

       Local $ErrText1 = $ZipDir & "\7z.exe nicht gefunden"

       Local $ErrText2 = $ZipDir & "\7z.dll nicht gefunden"

       Local $ErrText3 = "Archiv nicht gefunden"

       Local $ErrText4 = "ZielPfad konnte nicht erstellt werden"

       Local $ErrText5 = "$ZipDir konnte nicht erstellt werden"

 

;~        FileWriteLine($hLogFile," _Unzip > $ZipDir: " & $ZipDir & "   Err: " & @error)

 

       if not FileExists($ZipDir & "7z.exe") then

               FileWriteLine($hLogFile," _Unzip > 7z.exe nicht gefunden… ")

               SetError(1)

               $ErrText = $ErrText & @CRLF & "Err 1: " & $ErrText1

       EndIf

 

       if not FileExists($ZipDir & "7z.dll") then

               FileWriteLine($hLogFile," _Unzip > 7z.dll nicht gefunden… ")

               SetError(2)

               $ErrText = $ErrText & @CRLF & "Err 2: " & $ErrText2

       EndIf

 

       if not FileExists($TargetDir) then

               FileWriteLine($hLogFile," _Unzip > ZielPfad: " & '"' & $TargetDir & '"')

               FileWriteLine($hLogFile," _Unzip > ZielPfad nicht gefunden… ")

               DirCreate($TargetDir)

               FileWriteLine($hLogFile," _Unzip > versuchte, ZielPfad zu erstellen… ")

               Sleep(500)

               if not FileExists($TargetDir) Then

                       FileWriteLine($hLogFile," _Unzip > ZielPfad konnte nicht erstellt werden… ")

                       SetError(4)

                       $ErrText = $ErrText & @CRLF & "Err 4: " & $ErrText4

               EndIf

       EndIf

 

  Local $hSearch = FileFindFirstFile(@ScriptDir & "\*.zip")

   If $hSearch = -1 Then

;~    ;     MsgBox($MB_SYSTEMMODAL, "", "Error: No files/directories matched the search pattern: *.zip")

               FileWriteLine($hLogFile," _Unzip > Error: No files/directories matched the search pattern: *.zip")

               SetError(3)

                       $ErrText = $ErrText & @CRLF & "Err 3: " & $ErrText3

       Return False

   EndIf

       Local $sFileName = "", $iResult = 0

       While 1

       $sFileName = FileFindNextFile($hSearch)

       ; If there is no more file matching the search.

       If @error Then ExitLoop

;~    ;

       ; unzip the file…

       $UnzipExe        = $ZipDir  & "7z.exe x -aoa "

               $CurrDir        = '"' & @ScriptDir & '"'

;~    ;        $UnzipCmd = "cmd.exe /c " & $UnzipExe & $Archive & " -o" & $TargetDir & " & Pause"

               $UnzipCmd = "cmd.exe /c " & $UnzipExe & $sFileName & " -o" & '"' & $TargetDir & '"'

;~    ;

               FileWriteLine($hLogFile," _Unzip > $UnzipExe: " & $UnzipExe)

               FileWriteLine($hLogFile," _Unzip > $CurrDir:  " & $CurrDir)

               FileWriteLine($hLogFile," _Unzip > $TargetDir:" & '"' & $TargetDir & '"')

               FileWriteLine($hLogFile," _Unzip > $UnzipCmd: " & $UnzipCmd)

;~    ;

               $UnzipResult = runwait($UnzipCmd)

               $ErrorCode = @error

               Sleep(1000)

;~    ;

               FileWriteLine($hLogFile," _Unzip > — UnzipResult: " & $UnzipResult)

               FileWriteLine($hLogFile," _Unzip > — Unzip-Error: " & $Error)

   WEnd

 

   FileClose($hSearch)

 

       $Error[0] = @error

       $Error[1] = $ErrText

       FileWriteLine($hLogFile," _Unzip > ———- End of Function ———- ")

 

       Return $Error

EndFunc        ;        _Unzip()

 

 

 

autoit Syntax WMI

Beispiel für eine WMI-Abfrage:

 

$BootTime = BootTime()

 

MsgBox(0,"Info","BootTime: " & $BootTime & @CRLF & @CRLF & "(dieses Fenster schließt nach 10 Sekunden…)" ,10)

 

EXIT

 

Func BootTime()

   $COMPUTERNAME=@computername

   Local $ProductCode, $ProductName, $Val

   Local $objItems

   Local $objWMI

 

   $wbemFlagReturnImmediately = 0x10

   $wbemFlagForwardOnly = 0x20

 

   $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")

   $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

   If IsObj($objItems) Then

       For $objItem In $objItems

           $oBootTime        = $objItem.LastBootUptime

       Next

   EndIf

   $BootTimeArray=StringSplit($oBootTime,".",1) ; Entferne alle Zahlen nach dem . damit es in der Console schöner aussieht.

   $BootTime=$BootTimeArray[1]; Gib mir den Teil des Arrays links vom . (Punkt)

; $StartTime = StringRegExpReplace($BootTime, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})","$4:$5:$6 $3.$2.$1")

$StartTime = StringRegExpReplace($BootTime, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})","$3.$2.$1 – $4:$5")

return($StartTime)

EndFunc

autoit Syntax Win7 – UAC

Um das Programm mit erhöhlten Admin-Rechten auszuführen,
folgende Zeile einfügen:

 

#RequireAdmin

 

dim $uac_OFF = 0

dim $uac_ON = 1

 

; disable UAC

Local $uac_saved = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")

msgbox(0,"–INFO–", "UAC-RegKey ist: " & @TAB & $uac_saved)

#RequireAdmin

RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", $uac_OFF)

Local $uac = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")

msgbox(0,"–INFO–", "After disabling UAC-RegKey ist: " & @TAB & $uac)

 

 

; enable UAC

Local $uac_saved = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")

msgbox(0,"–INFO–", "UAC-RegKey ist: " & @TAB & $uac_saved)

#RequireAdmin

RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", $uac_ON)

Local $uac = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")

msgbox(0,"–INFO–", "After ensabling UAC-RegKey ist: " & @TAB & $uac)

 

 

autoit Syntax User SID

Get Username out of SID:

 

#include <Security.au3>

 

Local $vSID = "S-1-5-21-4148424496-1016001814-1247282737-109342"

 

 

$aUserAccount = _Security__LookupAccountSid ($vSID)

 

       If IsArray($aUserAccount) then

               MsgBox(0,"User","AccountName: " & @TAB & $aUserAccount[0] _

               & @CRLF & "DomainName: " & @TAB & $aUserAccount[1] _

               & @CRLF & "SID type: " & @TAB & $aUserAccount[2] _

               & @CRLF & "@error: " & @TAB & @error)

       Else

               MsgBox(0,"User","$aUserAccount enthält kein Array… " _

               & @CRLF & "@error: " & @TAB & @error)

       EndIf

 

Exit

autoit Syntax Text in Datei?

Überprüfen, ob ein TEXT in einer DATEI enthalten ist:

 

If StringInStr(FileRead('C:\Test.txt'), 'String') Then MsgBox(0,"", "String vorhanden!")

 

Ausführlich:

 

$Dateipfad = 'C:\Test.txt'

$Suchstring = 'String'

$Dateitext = FileRead($Dateipfad)

If StringInStr($Dateitext, $Suchstring) Then MsgBox(0,"", "String vorhanden!")

oder:

If StringInStr(FileRead($Dateipfad), $Suchstring) Then MsgBox(0,"", "String vorhanden!")

 


 

Text in einer Datei finden und ersetzen:

 

$ConfigFile = $Path & "\" & "File.config"

$Find = "SUCHEN"

$replace = "Finden"

 

$retval = 0

Local $retval = _ReplaceStringInFile($ConfigFile, $Find, $replace)

If $retval < 1 Then

;                MsgBox(0, "ERROR", "The pattern " & $Find & " could not be replaced in file: " & $ConfigFile & " Error: " & @error)

Else

       MsgBox(0, "INFO", "Found " & $retval & " occurances of the pattern: " & $find1 & " in the file: " & $ConfigFile)

       MsgBox(0, "INFO", "Replaced ServerName " & $Find & " in Config File to " & $replace)

EndIf

 


 

Text-Teile in einer Datei finden und Zeile ersetzen, oder anhängen, wenn nicht gefunden:

 

autoit Syntax Start Parameter

Commandline Parameter einlesen und auswerten:

 

z.B.:        /h , -h , /? oder -?        zeigt die Hilfe an

       /i oder -i                zeigt Informationen an

       /d oder -d                zeigt Debug-Informationen (z.B. Variablen-Werte) an

 

Diese müssen natürlich im Programm vorbereitet werden:

 

dim $debug=0        ; wenn 1, dann Debug-Infos anzeigen

dim $info=0                ; wenn 1, dann Info-Infos anzeigen

 

dim $setupDir=@ScriptDir        ; @AppDataDir

 

 

; ### check for CommandLineParameters

if $CmdLine[0]>0 Then

  if StringInStr($CmdLineRaw, "/h", 2) OR  StringInStr($CmdLineRaw, "/?", 2) OR StringInStr($CmdLineRaw, "-h", 2) OR  StringInStr($CmdLineRaw, "-?", 2) then HelpBox()

  if StringInStr($CmdLineRaw, "/d", 2) OR  StringInStr($CmdLineRaw, "-d", 2)then $debug=1

  if StringInStr($CmdLineRaw, "/i", 2) OR  StringInStr($CmdLineRaw, "-i", 2)then $info=1

EndIf

 

if $debug = 1 Then MsgBox(48, "_DEBUG_", "Var: $setupDir := " & $setupDir _

       & @CRLF &  "Var: $iniFile := " & $iniFile )

EndIf

 

if $info = 1 Then MsgBox(64, "_INFO_", "Info…" _

       & @CRLF & "Setupdatei lautet:" _

       & @CRLF & $setupFile & @CRLF & "Status: " & $setFileExists)

EndIf

 

; ################# eigene Funktionen ######################

 

Func HelpBox()

  MsgBox(32, "_HELP_", "Hilfe:" & @CRLF &  "Dieses Programm automatisiert die Installation von AEB – WUP." & @CRLF _

  & "In einer INI-Datei namens wup-install.ini muss die Setup-Datei angegeben werden." & @CRLF & @CRLF  _

  & "Beispiel der INI-Datei:" & @CRLF _

  & "        [setup]" & @CRLF _

  & "        file=wup.exe" & @CRLF & @CRLF _

  & "wobei WUP.EXE die Setup-Datei der Installation ist." & @CRLF & @CRLF _

  & "——————————————————" & @CRLF & @CRLF _

  & "Man kann dieses Programm mit folgenden Parametern starten:" & @CRLF _

  & "        diese Hilfe:        /h oder /? oder -h oder -? " & @CRLF _

  & "        InfoMode:        /i oder -i" & @CRLF _

  & "        DebugMode:        /d oder -d" & @CRLF & @CRLF _

  & "——————————————————" & @CRLF & @CRLF _

  & "Bei Fragen oder Änderungswünschen wende man sich an George " & @CRLF _

  & "Phone: +49 2773 924 3915 · mailto:quinting.g@loh-services.de" & @CRLF )

  EXIT

EndFunc        ; HelpBox

 

; ==================================================================

 

 


 

Funktion findet den Parameter-Wert nach einem Erkennungs-String (z.B: /u:)

 

local $UserId

 

if $CmdLine[0]>0 Then

  if StringInStr($CmdLineRaw, "/u:", 2) then

          local $UserId = _ExtractParameter($CmdLine,"/u:")

 

          MsgBox(64,"INFO","$CmdLineRaw: " & $CmdLineRaw _

          & @CRLF & "$CmdLine[0]: “ & $CmdLine[0] _

          & @CRLF & "$CmdLine[1]: “ & $CmdLine[1] _

          & @CRLF & "$UserId: " & $UserId _

          )

  EndIf

 

EndIf

 

MsgBox(64,"INFO","$UserId: " & $UserId)

 

EXIT

; ——————————————————–

 

Func _ExtractParameter($Array,$SubString)        ; ========================================

       Local        $Parameter
       for $i = 1 to $Array[0]

               if StringInStr($Array[$i], $SubString, 2) > 0 Then

                       $Parameter = StringTrimLeft($Array[$i],StringLen($SubString))

               EndIf

       Next

 

       Return $Parameter

 

EndFunc        ; _ExtractParameter($Array,$SubString) ————————————————————

 

autoit Syntax SEND Keys

Schnell Referenz für SEND("keys" [,flag])

o^        Ctrl

o!        Alt

o+        Shift

o#        Win

 

WINdows-7 – Explorer beenden: Quelle

       CTRL+ESC um das Startmenu zu öffnen

       Rechts-Pfeil, so das die "Herunterfahren"-Schaltfläche aktiviert wird

       CTRL und SHIFT halten und zusätzlich die Application Taste (oder F10) drücken

       dann "x" (engl) bzw. "b" (deu) drücken, um den Explorer zu beenden.

 

if @OSLang = 0407 Then

       SEND("^{ESC} {RIGHT} ^+ {F10} {b}")        ; (deutsches Windows)

Else

       SEND("^{ESC} {RIGHT} ^+ {F10} {x}")                ; (englisches Windows)

Endif

 

 

WINdows-7 – Explorer starten:


RunWait("explorer.exe")

 

1.)        ALT-Taste drücken, dann erscheint die Menüleiste
dort EXTRAS anklicken
und dann Netzlaufwerk verbinden.

 

2.)        Rechtsklick auf Netzwerk
dann Linksklick auf Netzlaufwerk verbinden. (siehe Bild)

autoit Syntax Registry

Überprüft, ob der Schlüssel "v4" vorhanden ist:

 

For $i = 1 To 10

   Local $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP", $i)

   If @error <> 0 Then ExitLoop

       if StringInStr($var,"v4") then

               MsgBox(4096, "SubKey #" & $i & " under NET Framework Setup\NDP: ", $var)

       Endif

Next

 

Vorhandene Schlüssel- und WerteNamen:

 

Dim $KeyNames  = "KeyNames:" & @CRLF & @CRLF

Dim $KeyName = "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Setup\Reader"

 

Dim $ValueNames = "Valuenames:" & @CRLF & @CRLF

Dim $ValueName = ""

 

Schlüssel-Namen:

For $i = 1 To 99

   Local $var = RegEnumKey($KeyName, $i)

   If @error <> 0 Then ExitLoop

       $KeyNames = $KeyNames & $i & ".) " & $var & @CRLF

 

Next

 

       MsgBox(65,"INFO","KeyNames under: " & $KeyName & @CRLF & @CRLF & $KeyNames)

 

 

Werte-Namen:

if RegRead($KeyName, "") >= ""  AND @error < 0 then                ; (es gibt den "(STANDARD)"-Wert)

               For $i = 1 To 100

                       Local $var = RegEnumVal($KeyName, $i)

                       If @error <> 0 Then ExitLoop

                       $ValueNames = $ValueNames & $i & ".) " & $var & " : " & RegRead($KeyName,$var) & @CRLF

               Next

 

                       MsgBox(65,"INFO","ValueNames under: " & $KeyName & @CRLF & @CRLF & $ValueNames)

Else

       MsgBox(65,"INFO","Kein STANDARD Wert unter: " & $KeyName)

EndIf

 

——————————————————————-

 

if RegRead($KeyName, "") >= ""  AND @error > 0 then                ; (es gibt den "(STANDARD)"-Wert NICHT)

 


 

Auslesen von allen Registrywerten unterhalb eines Schlüssels:

       Global $RegPath        = "HKEY_LOCAL_MACHINE\SYSTEM\FLG-Landesk\"        ; Registry-Pfad

       $IniFile                = @ComputerName & "_" & @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & ".ini"

 

               #Region ; ***** Read Registry Info and write to INI-File

 

               For $i = 1 To 50        ; zweiter Wert größer als erwartete Anzahl

                       Local $var = RegEnumKey($RegPath, $i)        ; $var ist Unterschlüssel unter $RegPath

                       If @error <> 0 Then ExitLoop

                       IniWrite($IniFile,$var,"Productname",RegRead($RegPath & $var,"Productname"))

                       IniWrite($IniFile,$var,"IsInstalled",RegRead($RegPath & $var,"IsInstalled"))

                       IniWrite($IniFile,$var,"Productversion",RegRead($RegPath & $var,"Productversion"))

                       IniWrite($IniFile,$var,"Revision",RegRead($RegPath & $var,"Revision"))

                       IniWrite($IniFile,$var,"ProgramFile",RegRead($RegPath & $var,"ProgramFile"))

                       IniWrite($IniFile,$var,"InstallPath",RegRead($RegPath & $var,"InstallPath"))

                       IniWrite($IniFile,$var,"Installdate",RegRead($RegPath & $var,"Installdate"))

                       IniWrite($IniFile,$var,"Installtime",RegRead($RegPath & $var,"Installtime"))

                       IniWrite($IniFile,$var,"UNInstalldate",RegRead($RegPath & $var,"UNInstalldate"))

                       IniWrite($IniFile,$var,"UNInstalltime",RegRead($RegPath & $var,"UNInstalltime"))

                       IniWrite($IniFile,$var,"InstallState",RegRead($RegPath & $var,"InstallState"))

               Next

 


 

(Standard) Wert setzen und auslesen:

 

#RequireAdmin                                                                                ; wichtig, da Berechtigung benötigt wird!

RegWrite("HKEY_CLASSES_ROOT\AutoIt3Script\Shell","","Reg_SZ","Edit")        ; "" so wird der (Standard) angesprochen (oder "ÿ" = ALT+152)

$wert = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell","")

MsgBox(64,"Reg","Standard enthältt: " & $wert)                                        ; der ausgelesene Wert wird angezeigt

 


 

Überprüfen, ob ein Schlüssel vorhanden ist: (funktioniert so nicht!)

Local $Fehler

$PendingFileRenameOperations = RegEnumKey("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager", "PendingFileRenameOperations")

$Fehler = @error

 

Switch $Fehler

   Case -1

       $FehlerText = "unable to retrieve requested subkey (key instance out of range)"

   Case 1

       $FehlerText = "unable to open requested key"

   Case 2

       $FehlerText = "unable to open requested main key"

   Case 3

       $FehlerText = "unable to remote connect to the registry"

EndSwitch

 

MsgBox(0,"RegEnumKey", "$PendingFileRenameOperations ist: " & $PendingFileRenameOperations _

       & @CRLF & "@Error ist: " & $Fehler _

       & @CRLF & @TAB & $FehlerText _

       )

 


 

 

Registry Type

Empirum

Autoit

0x00000000

REG_SZ

0x00000001

REG_BINARY

0x00010000

REG_MULTI_SZ

0x00020000

REG_EXPAND_SZ

0x00010001

REG_DWORD

0x00020001

REG_NONE

 

 

 

autoit Syntax MAIL

eMails senden:

 

#include <Inet.au3>

 

Local $s_SmtpServer = "smtp-Server.com"

Local $s_FromName = "Sender"

Local $s_FromAddress = "postmaster@localhost.de"

Local $s_ToAddress = "george@mail.com"

Local $s_helo = ""

Local $s_Subject = "Das ist ein Test"

Local $as_Body[3]

$as_Body[0] = "AD Email Text"

$as_Body[1] = "Zeile 2"

$as_Body[2] = "Zeile 3"

Local $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_helo, -1,1)

Local $err = @error

If $Response = 1 Then

       MsgBox(0, "Success!", "Mail sent")

Else

       MsgBox(0, "Error!", "Mail failed with error code " & $err)

EndIf