Hi
Hat jemadn von euch ein Script (Funktion) mit dem man in einer beliebigen Datei einen String SUCHEN und Ersetzen kann ?
Hi
Hat jemadn von euch ein Script (Funktion) mit dem man in einer beliebigen Datei einen String SUCHEN und Ersetzen kann ?
Hallo,
wenn Du mit solchen Fragen kommst, fängst Du wohl gerade mit Autoit an.
An dieser Stelle empfehlen wir jedem sich kurz mal die Einstiegshilfe anzusehen.
http://autoit.aufwaerts.de/thread.php?threadid=15&sid=
Mit der Deutschen Hilfe und Scite programiert sich Autoit fast von selber
Wie sieht das rechtlich aus ?
Sind beides "Kauf"-Programme ?
Schön gemacht
..kann man bestimmt auch für andere Befehle anwenden (z.B IPCONFIG)
Für mich ein rel. leichter Weg eine Idee in ein einfaches Programm umzusetzen.
Womit geht es einfacher ?
Dazu eine relativ "perfekte" Entwicklungsumgebung (SCITE)
Und das Beste zum Schluß!
Alles ist kostenlos
oh, ja genau
Das ist ja eigendlich genau das was ich meinte.
Ich wußte nur nicht das es das schon gab
Hi,
Ich fände es gut wenn wir hier so eine Art Einsteigerempfehlung geben für alle die mit AUTOIT starten.
Vielleicht geben ja mal ein paar Leute Ihre Kommentare und Anregungen hier rein und Pheethebee kann das dann ggf. als immer oben liegenden Threat markieren, oder wie man das eben am besten macht
Ich fange einfach mal an:
Jeder der mit Autoit anfängt sollte sich zunächst folgendes besorgen:
Autoit (LINK?)
Beschreibung:
überflüssig, oder
Die Deutsche Hilfe (LINK?)
Beschreibung:
Wer die installiert hat ist hier klar im Vorteil
Autoit BETA version (LINK?)
Beschreibung:
läuft parallel zur "Normalen" Version. Wer ein bischen tiefer einsteigt wird schon bald nicht mehr ohne auskommen
SCITE (LINK?)
Beschreibung:
Scite ist DER Editor für AU3 Scripte!
Auch für Anfänger S E H R zu empfehlen
Es gibt zu jedem Befehl wo der Cursor gerade steht über F1 direkt die Hilfe dazu. Dazu gibt es ein Autovervollständigen (nie mehr Tippfehler)
Alle Funktionen die sich auf die BETA Version beziehen sind mit der ALT taste erreichbbar (Hilfe über ALT+F1)
Hi
Die Version von GunFood funktioniert bei mir
Kann mir jemand sagen was man damit brauchbares abfragen kann ???
Man bekommt sehr viel Systeminfos, aber so richtig "klick" hat es bei mir noch nicht gemacht
Normalerweise gebe ich dir Recht,
aber das ist in diesem Fall nicht möglich, weil dann jeder PC der sich anmeldet für jede Zeile eine MSG Box bestätigen muß.
Das Script hat aber über 700 Zeilen.
D.h über 700 Messageboxen
Das würden andere dann als Virus bezeichnen.
Außerdem will ich im nachhinein nachfollziehen können was bei jedem der PCs passiert ist.
Auch zu jeder Zeile ein Filewriteline hinzufügen möchte ich ausschließen.
Das wäre eine irre Arbeit, ne lieber nicht.
Na gut mit einem Script ging es vielleicht...
Aber das wäre alles nicht "AUTOIT Like"
Hi,
Ich nutze eine Script mit vielen Funktionen das wärend des loginprozesses läuft. Jetzt hängte es manchmal zu lange und es geht nicht weiter. Ich weiß aber nicht warum.
Deshalb möchte ich zu Debugzwecken ein Logfile mitschreiben indem ein Zeitstempel vorrangestellt wird um zu sehen welche Funktion das Problem verursacht
Normalerweise wäre die Information die "Opt("TrayIconDebug", 1)" am TrayIcon erzeugt genau das was ich an Info brauche, nur wärend des loginProzesses ist der Desktop und Trayicon noch nicht geladen so das man das nicht sieht.
Was ich brauche ist eine Funktion die jede Befehlszeile mit einem Datum versieht und in ein LOG File schreibt.
Beispiel
Ich möchte folgende Funktion loggen
Func FTP_PUT()
$server = '100.100.100.100'
$username = 'test'
$pass = 'test'
$Open = _FTPOpen('FTP Inventarisierung')
$Conn = _FTPConnect($Open, $server, $username, $pass)
$Ftpp = _FtpPutFile($Conn, $AUSGABEFILE, $NAMEFILE)
$Ftpc = _FTPClose($Open)
EndFunc
Alles anzeigen
Das logfile sollte dann so aussehen.
Datumsformat für das logfile: yyyy.mm.dd.hh.mm.ss
ZitatAlles anzeigen
2006.02.25.07.44.02-> $server = '100.100.100.100'
2006.02.25.07.44.03-> $username = 'test'
2006.02.25.07.44.03-> $pass = 'test'
2006.02.25.07.44.03-> $Open = _FTPOpen('FTP Inventarisierung')
2006.02.25.07.44.05-> $Conn = _FTPConnect($Open, $server, $username, $pass)
2006.02.25.07.44.05-> $Ftpp = _FtpPutFile($Conn, $AUSGABEFILE, $NAMEFILE)
2006.02.25.07.44.07-> $Ftpc = _FTPClose($Open)
Hat jemand eine Idee ?
also, bei mir bleibt das Fenster leer....
ein anderes gefundenes Script hingegen was die CPU last anzeigt funktioniert...
Bringt mal Beispiele wenn Ihr habt....
der erste test war schon mal negativ
keins der integrierten Patches war integriert
Hi ,
ich hatte mir eine kleine Hotfix Update Rotine geschrieben, die in etwa das macht, was auch die diversen HotfixPaketet machen.
Ein Nebenprodukt ist dieses Script hier geworden.
Ein Script mit dem man alle Patches aus einem Ordner (z.B den DATA Ordner aus dem Update Pack von Winboard.org) in eine XP-CD mit SP2 integrieren kann.
Zuerst wird nach dem Ordner gefragt wo der "I386" Ordner drin liegt.
Dann wird nachdem Ordner gefragt wo die Hotfixes drin liegen.
Den Rest besorgt das Script.
Die CD müßt Ihr hinterher natürlich noch selber Brennen.
Das ganze ist noch nicht 100 % getestet, also keine Garantie, das es klappt
Ich hoffe aber schon.
#include <file.au3>
#include <Process.au3>
#include <Date.au3>
#include <Constants.au3>
#include <Array.au3>
Opt("RunErrorsFatal",0)
Opt("TrayIconDebug", 1) ; zeigt am trayicon welchen Befehl das Script gerade Ausführt
$hotfix_inifile = @TempDir & "\hotfix.ini"
dim $KB_read
dim $hotfixfind
dim $hotfixfile
dim $search2
dim $abbruch
dim $hotfix_dir
dim $mylist
dim $Form1
dim $anzahl_Patches
dim $strArr
Dim $mapdrive
Dim $CHECK_RUN
dim $installierte_Patches
dim $progress_full
Global $zaehler
dim $deltafile
dim $font
dim $myprogress
dim $mylabel
dim $myprogress
dim $OS_INFO
dim $i386
;--- HOTKEY für Abbruch -----
HotKeySet("!{ESC}","abbruch")
; --- Programm ablauf
FileDelete("c:\integrate.log")
slipstream()
;--- Funktionen
Func slipstream()
$i386 = FileSelectFolder("Ordner für XP SP2 Boot CD auswählen", "")
$hotfix_sp2_dir = FileSelectFolder("Ordner mit den zu integrierenden Files auswählen", "")
$hotfix_dir = $hotfix_sp2_dir
Hotfix_auslesen_xp_sp2()
slipstream_sp2()
EndFunc
Func slipstream_sp2()
; Gui erzeugen
$Form1 = GUICreate("Update Übersicht", 700, 220, 10 , 10)
$myprogress = GUICtrlCreateProgress(150,180,500,20)
$OS_INFO = GUICtrlCreateLabel(@OSversion & " " & @OSServicePack & " Hotfix Updater by WOLKE",150,20,300,50)
$mylabel = GUICtrlCreateLabel($deltafile & @CR & "wird jetzt integriert"& @CR & "Update " & $zaehler & " von " & $anzahl_Patches, 150, 100, 500, 150)
GUICtrlSetFont ($mylabel,14, 400, 1, $font)
If DriveGetType($hotfix_dir) = 'Network' And DriveGetType($hotfix_dir) <> 'Unknown' Then
$mapdrive = DriveMapAdd("*", $hotfix_dir)
EndIf
;~ DriveMapAdd("B:", $hotfix_dir)
FileChangeDir( $mapdrive)
;--- neue Methode mit 1D Array
$var = IniReadSection($hotfix_inifile,"HOTFIX"); INI Datei in 2D Array einlesen
If @error Then
;~ exit_error_func()
DriveMapDel($mapdrive)
MsgBox(64,"ACHTUNG","keine neuen Patches gefunden" & @CR & "Überpfüfung wird beendet",4)
Exit
Else
;--- ARRAY von 2D nach 1D wandeln, Thanks To ARI
$anzahl_Patches = $var[0][0]
For $i = 1 To $var[0][0]
$strArr = $strArr & '|' & $var[$i][0]
Next
If StringLeft($strArr , 1) = '|' Then
$strArr = StringTrimLeft($strArr, 1)
EndIf
$arrNewArr = StringSplit($strArr, '|')
_ArraySort( $arrNewArr)
;--- $hotfix_inifile sortiert zurückschreiben
FileDelete($hotfix_inifile); erst löschen
For $i = 1 To $arrNewArr[0]
IniWrite($hotfix_inifile,"HOTFIX",$arrNewArr[$i],1)
Next
;--- sortiertes Array - Patches nacheinander installieren
$anzahl_Patches = $arrNewArr[0]
;~ ProgressOn("Windowsupdate","Updates werden installiert",10 , @DesktopWidth/2-200,16)
For $i = 1 To $arrNewArr[0] ;$arrNewArr[0] entspricht der Anzahl der zu instalierenden Patches
GUICtrlDelete($mylist)
$mylist = GUICtrlCreateList("",5 ,15, 120, 200)
Liste_anzeigen()
$zaehler= $i
$search = FileFindFirstFile("*" & $arrNewArr[$i] & "*"); Suche nach dem Patch mit der KB-Nummer
If @error Then ExitLoop
$deltafile = FileFindNextFile($search) ; Name des kompletten Files finden
;~ MsgBox(0,"",$deltafile)
FileClose($search)
;~ SplashTextOn("Windowsupdate",$deltafile & " wird jetzt installiert"& @CR & "Update " & $zaehler & " von " & $anzahl_Patches , 600, 50, @DesktopWidth/2-300, 10)
$progress_full = (100/$anzahl_Patches*$zaehler)
;~ ProgressSet($progress_full, "HOTFIX " & $zaehler & " von " & $anzahl_Patches & " wird jetzt installiert", $deltafile)
GUICtrlSetData($myprogress,$progress_full)
GUICtrlSetData($mylabel,$deltafile & @CR & "wird jetzt installiert"& @CR & "Update " & $zaehler & " von " & $anzahl_Patches)
GUISetState()
RunWait($deltafile & ' /passive /integrate:' & $i386 & ' /log:c:\temp.log')
_RunDOS('echo ----------------------------------------------------- >>c:\integrate.log')
_RunDOS('type c:\temp.log >>c:\integrate.log')
$logfile = FileOpen("c:\temp.log", 0)
; Check if file opened for reading OK
If $logfile = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($logfile)
If @error = -1 Then ExitLoop
$integrateerror = StringInStr($line, "Fehler")
if $integrateerror > 0 Then
MsgBox(4096,"ACHTUNG","Es ist ein Fehler beim integrieren des Hotfixes aufgetreten." & @CR & "Bitte überprüfen Sie das Logfile")
EndIf
Wend
FileClose($logfile)
IniDelete($hotfix_inifile,"HOTFIX",$arrNewArr[$i]) ; installieren Patch aus der INI-Datei entfernen
;~ SplashOff()
if $zaehler == $anzahl_Patches Then exitfunc()
$var2 = EnvGet("abbruch") ; IF (Abbruch Variable durch HOTKEY ausgelößt) THEN Abarbeitung beenden
if $var2 == 1 Then
MsgBox(4096,"Windowsupdate", "Das Update wird auf Anforderung abgebrochen" & @LF & "Beim nächsten LOGIN wird an dieser Stelle angeknüpft",4)
exitfunc()
EndIf
Next
GUIDelete($Form1)
EndIf
EndFunc
Func Hotfix_auslesen_xp_sp2()
FileDelete($hotfix_inifile) ; Neustart
FileChangeDir ($hotfix_dir) ; Pfad zu den ausgepackten Hotfixes
$search2 = FileFindFirstFile("*-x86-*.exe"); Suchmuster für Patchfiles
If $search2 = -1 Then
MsgBox(16, "Error", "Keine Patchfiles gefunden - Bitte das Quellverzeichnis überprüfen")
Run("Explorer " & $hotfix_dir)
Exit
Else
;--- Liste der Hotfixes im Hotfixverzeichnis nach Muster KB?????? erstellen
While 1
$hotfixfind = FileFindnextFile($search2) ; erstes Patchfile ;~ MsgBox(0, "", $hotfixfind)
if @error = 1 Then ExitLoop
$KB_STRING = StringSplit($hotfixfind,"-x86-",1) ;KB Nummer isolieren 1 ;~ MsgBox(0, "", $KB_STRING[1])
$KB_STRING2 = StringSplit($KB_STRING[1],"-",1) ;KB Nummer isolieren 2 ;~ MsgBox(0, "", $KB_STRING2[2])
IniWrite($hotfix_inifile,"HOTFIX",$KB_STRING2[2],1) ;KB Nummer in INI-File schreiben
WEnd
FileClose($search2); Close the search handle
EndIf
;~ Hotfix_vergleich_xp_sp2()
EndFunc
Func Liste_anzeigen()
;--- Patchliste erzeugen
$deltafile = IniReadSection($hotfix_inifile,"HOTFIX")
For $i = 1 To $deltafile[0][0]
GUICtrlSetData($mylist,$deltafile[$i][0])
IniWrite($hotfix_inifile,"NOW",$deltafile[$i][0],1)
Next
EndFunc
Func exitfunc()
ProgressOff()
DriveMapDel($mapdrive)
MsgBox(48,"!!! Integeration abgeschlossen !!!","Es wurden " & $zaehler & " von " & $anzahl_Patches & " Updates installiert " & @CR & "Bitte Überprüfen Sie das Logfile")
FileDelete("c:\temp.log")
Run('notepad' & ' c:\integrate.log')
Exit
EndFunc
Func exit_error_func()
DriveMapDel($mapdrive)
MsgBox(16,"FEHLER","Es ist ein Fehler bei der INTEGRATION aufgetreten",5)
Exit
EndFunc
Func Abbruch()
EnvSet("Abbruch",1)
MsgBox(24,"!!! ACHTUNG !!!","Die Update- Aktion wird nach dem nächsten Patch abgebrochen",4)
EndFunc
Alles anzeigen
Jetzt bin ich schon viel schlauer.
Bin gespannt was Du noch dazu schreibst.
Praktische Beispiele mit AUTOIT z.B
Ich glaube dann warte ich noch ein bischen.
Ich hab ne Ahnung was WMI Infos sind, aber genau könnte ich das nicht sagen....
Waren das die Geräte infos die z.B AIDA32/EVEREST liefert ? (das wäre ja geil!!)
irgendwie kann ich mir unter Scriptomatic nicht so recht was vorstellen.
Was kann mann damit den was nicht soweiso mit Autoit ginge ?
hast Du mal irgendein Beispiel.
Ich tue mich mit dem English immer so schwer !!
Hi,
eigendlich hatte ich das falsche Script eingestellt, denn es ging Dir um das Check und Uncheck.
Guck dir das noch mal an:
; Schnellstartleiste aktivieren
BlockInput(1)
AutoItSetOption("MouseCoordMode", 1)
Run("rundll32.exe shell32.dll,Options_RunDLL 1")
Winwait("Eigenschaften von Taskleiste und Startmenü", "Taskleiste")
ControlCommand("Eigenschaften von Taskleiste und Startmenü", "Taskleiste", "Button5","Check", "")
;ControlClick("Eigenschaften von Taskleiste und Startmenü", "Taskleiste", "Button5")
Sleep(500)
ControlClick("Eigenschaften von Taskleiste und Startmenü", "Taskleiste", "Button11");OK
WinWaitClose("Eigenschaften von Taskleiste und Startmenü", "Taskleiste")
BlockInput(0)
exit
Alles anzeigen
Hi Markus,
Ich habs mir mal angeguckt.
Es funktioniert bei mir jetzt wesendlih besser, auch wenn ich einige Funktionen noch nicht so ganz verstehe (Menue, TreeViewItem,...) wie das zu Handhaben ist.
So aber ne feine Sache !
guck mal hier:
AutoItSetOption("MustDeclareVars", 1)
AutoItSetOption("MouseCoordMode", 0)
AutoItSetOption("TrayIconDebug", 1)
Dim $Prog
EnvSet("C:\WINDOWS\explorer.exe", $Prog)
Run("C:\WINDOWS\explorer.exe") ;15:10:56
Sleep(2000)
;
; ----------------------------------------------------------------------------------
; Script Start:
; ----------------------------------------------------------------------------------
;
; Aktiver Fenster Titel:
; ----------------------
WinWait("Eigene Dateien");15:10:56
Sleep(1000)
send ("{ALT}") ;Ansicht
send ("a")
Sleep(1000)
send ("d") ;Ansicht Details auswählen
Sleep(1000)
send ("{ALT}") ;Ordneroptionen
send ("x")
send ("o")
send ("!w") ;Stadart wiederherstellen
sleep (1000)
send ("h") ;herkömlichen Windowsordner
send ("s") ;jeden Ordner im selben Fenster
Sleep(1000)
send ("b") ;übernehmen
send ("+{TAB}") ;zum Karteireiter Ansicht wechseln
send ("{RIGHT}")
AutoItSetOption("MouseCoordMode",0); relative Mausekooridinaten
;MouseClick("left",91,40,1, 0);Reiter wählen
sleep (1000)
send ("!w") ;Stadart wiederherstellen
MouseClick("left",61,206,1, 0);Ansichtsoptionen für jeden Ordner abspeichen = AUS
Sleep(1000)
MouseClick("left",61,222,1, 0) ;Aut. Nach Netzwerkdruckern suchen = AUS
Sleep(1000)
MouseClick("left",61,238,1, 0) ;Einfache Dateifreigabe = AUS
Sleep(1000)
MouseClick("left",61,252,1, 0) ;Einfache Ordneransicht = AUS
Sleep(1000)
MouseClick("left",61,271,1, 0) ;Ereiterungen für bekannte Dateitypen ausblende = AUS
Sleep(1000)
MouseClick("left",61,286,1, 0) ;
Sleep(1000)
send ("{PGDN}")
send ("{PGDN}")
Sleep(1000)
MouseClick("left",61,318,1, 0) ;
Sleep(1000)
MouseClick("left",61,335,1, 0) ;
Sleep(1000)
send ("!b")
Sleep(1000)
send ("!a") ;Für alle Ordner übernehmen
Sleep(1000)
send ("!j") ;bestätigen
sleep (1000)
send ("+{TAB}");Zum Karteireiter Offlinedateien
send ("{RIGHT}")
send ("{RIGHT}")
Sleep(1000) ;Offlinedateien deaktivieren
send ("!d")
Send("{-}") ;Offlinedateien safe_unchecked!!
Sleep(1000)
send ("!b")
Sleep(1000)
send ("{ENTER}")
Sleep(1000)
send ("!{F4}")
exit
Alles anzeigen