Hi,
Schau dir mal die Funktion Random in der (deutschen) Hilfe an.
Greetz
Hi,
Schau dir mal die Funktion Random in der (deutschen) Hilfe an.
Greetz
Hi,
sieht gut aus
Du kannst ja noch eine Funktion einbauen, dass du einen Kontextmenü-Eintrag von Windows ( also eben Rechtsklick auf irgendeine Datei ) erstellst,
wo dann steht: Hochladen zu FTP,
und dann läd er eben die ausgewählten Dateien zu einem vorher eingestellten FTP hoch,
das wäre super praktisch:)
Hier mal ein Beispiel, wo ich diesen Kontext-Menü Eintrag erstellt hatte, aber eben um ein BMP einfach in ein JPG umzuwandeln.
Man muss das Skript erst einmal ausführen, damit der Eintrag erstellt wird ( es muss aber vorher compilet werden, da dann die Registry auf diese Exe zugreift ).
Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\ICO's\shell32-217(48-32).ICO
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GDIPlus.au3>
If $CmdLine[0] = 0 Then
$ProgPath = @ScriptFullPath
msgbox(0,"installed","installed: menu entry created!")
RegWrite("HKEY_CLASSES_ROOT\*\shell\Convert to JPG\command", "", "REG_SZ", '"' & $ProgPath & '" "%1"')
Exit
EndIf
$ImagePath = $CmdLine[1]
_BmpToJpg($ImagePath)
Func _BmpToJpg($filename)
; GDI+ initialisieren.
_GDIPlus_Startup()
; falls mehrere Dateien mit FileOpenDialog ausgewählt wurden ...
If StringInStr($filename, '|') Then
$aFilenames = StringSplit($filename, '|')
For $i = 1 To $aFilenames[0]
; Handle zu Imageobjekt erhalten.
$hImg = _GDIPlus_ImageLoadFromFile($filename)
; Imageobjekt als Bitmapdatei abspeichern.
_GDIPlus_ImageSaveToFile($hImg,StringTrimRight($filename ,3)& "jpg")
; Imageobjekt auflösen.
_GDIPlus_ImageDispose($hImg)
Next
; ... falls nicht.
Else
; Handle zu Imageobjekt erhalten.
$hImg = _GDIPlus_ImageLoadFromFile($filename)
; Imageobjekt als Bitmapdatei abspeichern.
_GDIPlus_ImageSaveToFile($hImg,StringTrimRight($filename ,3)& "jpg")
; Imageobjekt auflösen.
_GDIPlus_ImageDispose($hImg)
EndIf
; GDI+ beenden.
_GDIPlus_Shutdown()
EndFunc
Greetz
selber volltrottel!!!!
ansonsten nice prog
habs zwar noch net ausprobiert aber ich hatte ja die idee und wenn es klappt MUSS es gut sein.
Danke^^
Ja dann probier es mal aus, schließlich hast du ja danach gefragt
Hi,
wollte hier mal ein Programm von mir vorstellen, was ich vor nicht allzu langer Zeit geschrieben habe.
Es heisst:
Ordner Synchronisation (Version 1.2 Beta)
Kurz gesagt wozu es dient:
Es synchronisiert zwei Ordner ( Zielordner mit Quellordner, wobei Quellordner der Ordner auf dem neusten Stand sein soll ) unter angegebenen Optionen,
die da wären:
Synchronisiere neue Dateien (kopiere neue Quelldatei nach Zielordner)
Synchronisiere veränderte Dateien (ersetze Zieldatei mit Quelldatei wenn unterschiedlich)
Synchronisiere gelöschte Dateien (lösche Zieldatei wenn Quelldatei gelöscht wurde)
Er Synchronisiert anhand der Größe zweier Dateien oder dem Datum.
Es wird vor dem eigentlichen Vorgang eine Liste mit den Aktionen erstellt, welche man dann bearbeiten kann.
Es ist auch möglich, Synchronisationsshortcuts zu erstellen, um mit einem Klick zu synchroniseren.
Was praktisch ist: Man kann auch mit Netzwerkpfaden und natürlich USB-STicks oder sonst etwas synchronisieren.
Für eine ausführlichere Erläuterung im Programm unter "Hilfe" schauen oder hier lesen:
Ordner Synchronisation Hilfe 1.2 Beta
1.0 Ordnertypen
1.1 Was ist der Zielordner?
Der Zielordner ist der Ordner, der bei der Synchronisation bearbeitet wird.
In dem Zielordner werden beispielsweise Dateien ersetzt, wenn in dem Quellordner
eine andere/neue Datei vorliegt. der Zielordner ist also der 'veraltete' Ordner,
welcher aktualisiert wird. Auch Netzwerk-Ordner oder Datenträger wie
USB-Stick's / externe Festplatten werden unterstützt.
1.2 Was ist der Quellordner?
Der Quellordner ist der Ordner, der dem Zielordner die (aktuelleren) Daten lieftert,
damit der Zielordner sich aktualisieren kann. Auch Netzwerk-Ordner oder Datenträger wie
USB-Stick's / externe Festplatten werden unterstützt.
2.0 Optionen
2.1 Synchronisiere neue Dateien
Diese Option bewirkt, dass Dateien, die im Quellordner vorhanden sind,
im Zielordner allerdings nicht, vom Quellordner in den Zielordner kopiert werden.
Diese Option sollte Bestandteil einer Synchronisation sein,
um sich so die neusten Dateien aus dem Quellordner zu kopieren.
2.2 Synchronisiere veränderte Dateien
Diese Option bewirkt, dass wenn eine Datei in beiden Ordnern vorhanden ist,
die Datei aus dem Quellordner die Datei aus dem Zielordner überschreibt.
Somit werden Dateien aktualisiert, und zwar die 'alte' Datei aus dem Zielordner
wird mit der neuen Datei aus dem Quellordner ersetzt.
2.3 Synchronisiere gelöschte Dateien
Diese Option bewirkt, dass Dateien, die im Zielordner vorhanden sind,
im Quellordner allerdings nicht, im Zielordner gelöscht werden.
Diese Option sollte vorsichtig verwendet werden, da sie Dateien
aus dem Zielordner löschen könnte, die eventuell noch benötigt werden.
3.0 Log-Dateien
3.1 Logdateien Speichern
Sie können im Menü unter dem Menüpunkt Erweitert -> Logs -> Logs erstellen entscheiden,
ob Log-Dateien angelegt werden sollen oder nicht. Eine Log-Datei wird
nach jeder Synchronisation angelegt, und beinhaltet alle Aktionen die getätigt wurden.
3.2 Logdateien Speicherpfad
Unter dem Menüpunkt Erweitert -> Logs -> Log Speicherpfad den Pfad, wo die
Log Dateien gespeichert werden sollen, bestimmen. Der aktuelle log Speicherpfad
steht in Klammern.
4.0 Synchronisations-Shortcuts
4.1 Was ist ein Synchronisations-Shortcut?
Ein Synchronisations-Shortcut ist eine Datei, die man anlegen kann, um mit
einem Klick eine Synchronisation durchzuführen. Die Optionen der Synchronisation legt man
vorher fest und speichert sie in dem Shortcut. Somit ist es möglich, sich mehrere
Shortcuts anzulegen, um somit verschiedene Synchronisationen schnell durchzuführen,
wenn man es benötigt.
4.2 Synchronisations-Shortcut erstellen
Um ein Synchronisations-Shortcut zu erstellen, startet man Ordner Synchronisation Version 1.1 Beta
wie gewöhnlich und wählt den Zielordner, Quellordner, sowie die Optionen nach belieben aus. Auch eine
Log-Datei wird in Abhängigkeit der Logeinstellungen bei einer Synchronisation per Shortcut erstellt.
Statt nun jedoch die Synchronisation zu starten, wählt man im Menü den Eintrag
'Erweitert -> Synchronisations-Shortcut anlegen'. Nach der Eingabe des Namens und des Speicherorts
erhält man eine Bestätigung, mit welchen Einstellungen das Shortcut erstellt wurde.
Bei jeder Ausführung dieses erstellten Shortcuts wird eine Synchronisation mit diesen
Einstellungen durchgeführt. Achtung: Bei der Synchronisation mit einem Shortcut wird vorher KEINE
Aktionsliste erstellt, die bearbeitet werden könnte.
Ich nutze das Programm, um meinen Schul-USBstick mit meinem Ordner auf dem Rechner zu synchronisieren, um meine AutoIt Backups auf unserem Heimserver auf dem aktuellen Stand zu haben und auch meine Mp3s Deshalb hab ich auch die Synchronisations-Shortcut-Funktion erstellt.
Hier der Sourcecode, auch mit compilter Exe:
autoit.de/wcf/attachment/8294/
changelog 1.1 Beta -> 1.2 Beta:
Felder Quellordner und Zielordner vertauscht
"Neuer Ordner" Button bei Zielordner hinzugefügt
"Neuer Ordner" Button bei "setze Log-Speicherpfad" hinzugefügt
Freue mich auf Kritik und Anregungen!!
Grüße, Max
Sieht gut aus
Hi,
wenn der Name des GUI-Titels immer gleich bleibt, einfach eine bestimmte Anzahl Leerzeichen vor den Guinamen setzen,
wenn die GUI-Titellänge immer anders ist ( so wie hier, weiss aber nich warum das von nöten ist ), aber der eigentliche GUI immer gleich breit ist,
könnte man schauen, wieviel Leerzeichen in die ganze Titelleiste passen,
dann diesen Wert minus die Länge des GUI-Titels, dann das ganze durch 2,
und diese Anzahl Leerzeichen dann vor den Gui-Titel setzen xD
Müsste ja theoretisch funktionieren, wenn Leerzeichen gleich groß sind wie andere Buchstaben?.
Greetz^^
Edit: ich sehe gerade die GUI Größe ist immer anders, abhängig von der Auflösung, dann muss man scheinbar noch die Gesamtleerzeichenanzahl der Titelleiste rausfinden, das könnte man ja relativ zur desktopwidth dann machen.
Vielleicht gibts ja aber auch nen ganz simplen Befehl dazu, den ich wenn dann aber nicht kenne
Hi,
dass man das Programm ohne .ini nicht starten kann finde ich blöd/überflüssig,
du kannst doch eine neue erstellen lassen wenn keine da ist, mit vorheriger Abfrage ob das gewünscht ist.
Greetz
das verstehe ich jetzt nicht, der pfad kann doch auch in der include sein Oo
Beispiel:
;die include.au3
$Pfad = "blalala" ;oder @scriptdir oder whatever
;Hauptscript
#include "include.au3"
Msgbox(0,"",$Pfad)
@scriptdir ist allerdings egal wo man es aufruft immer das selbe, weils nunmal ein und das selbe script is un auch ein und die selbe exe sein wird.
Habe mal beide Funktionen gegeneinander getestet mit jeweils 10 durchläufen nacheinander, die _GetFileList ist minimal schneller,
bei 10 durchläufen nacheinander von immer 5000 dateien ist sie gradmal 500ms schneller, also pro durchlauf ca 50ms auf 5000 dateien
Hi,
also #include ist ja das selbe, wie einfach den code aus der include in das originalscript zu kopieren. (soweit ich weiss).
Das heisst, wenn du erst beispielsweise eine Variable $Pfad anlegst ( im Hauptscript ), danach das andere Unterscript includest, müsstest du in dem Unterscript auf die Variable Pfad zugreifen können.
Beispiel:
;Hauptscript
$Pfad = @scriptdir
Msgbox(0,"","Ich bin das hauptscript.")
#include "unterscript.au3"
;unterscript.au3
Msgbox(0,"","Pfad des Hauptscriptes: " & $Pfad)
Hoffe hab dich richtig verstanden.
greetz
Func _GetFileList($T_DIR, $T_MASK, $DIR_ONLY = 0)
Dim $N_DIRNAMES[200000] ; max number of directories that can be scanned
Local $N_DIRCOUNT = 0
Local $N_FILE
Local $N_SEARCH
Local $N_TFILE
Local $N_OFILE
Local $T_FILENAMES
Local $T_FILECOUNT
Local $T_DIRCOUNT = 1
Local $FILEMASK
; check Filemask \ for empty File-Array by GetDirOnly
If $FILEMASK = "n" Then $FILEMASK = "*.no"
; remove the end \ If specified
If StringRight($T_DIR, 1) = "\" Then $T_DIR = StringTrimRight($T_DIR, 1)
$N_DIRNAMES[$T_DIRCOUNT] = $T_DIR
; Exit if base dir doesn't exists
If Not FileExists($T_DIR) Then Return 0
; keep on looping until all directories are scanned
While $T_DIRCOUNT > $N_DIRCOUNT
$N_DIRCOUNT = $N_DIRCOUNT + 1
; find all subdirs in this directory and save them in a array
$N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\*.*")
While 1
$N_FILE = FileFindNextFile($N_SEARCH)
If @error Then ExitLoop
; skip these references
If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
$N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
; if Directory than add to the list of directories to be processed
If StringInStr(FileGetAttrib($N_TFILE), "D") > 0 Then
$T_DIRCOUNT = $T_DIRCOUNT + 1
$N_DIRNAMES[$T_DIRCOUNT] = $N_TFILE
EndIf
WEnd
FileClose($N_SEARCH) ; find all Files that mtach the MASK
$N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\" & $T_MASK)
If $N_SEARCH = -1 Then ContinueLoop
While 1
$N_FILE = FileFindNextFile($N_SEARCH)
If @error Then ExitLoop
; skip these references
If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
$N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
; if Directory than add to the list of directories to be processed
If StringInStr(FileGetAttrib($N_TFILE), "D") = 0 Then
$T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
$T_FILECOUNT = $T_FILECOUNT + 1
;MsgBox(0,'filecount ' & $T_FILECOUNT ,$N_TFILE)
EndIf
WEnd
FileClose($N_SEARCH)
WEnd
If $DIR_ONLY = 0 Then
$T_FILENAMES = StringTrimRight($T_FILENAMES, 1)
$N_OFILE = StringSplit($T_FILENAMES, @CR)
Return ($N_OFILE)
Else
ReDim $N_DIRNAMES[$N_DIRCOUNT + 1]
$N_DIRNAMES[0] = $N_DIRCOUNT
Return $N_DIRNAMES
EndIf
EndFunc ;==>_GetFileList
Diese Funktion sollte das Selbe tun, weiss aber grad nicht mehr wo ich sie her habe und ob sie schneller ist.
Greetz
edit: oh, das langsam bezog sich ja garnicht auf die Funktion =D
egal, man könnte ja mal einen Geschwindigkeitsvergleich durchführen..
Hi,
also ich kann mir nicht vorstellen, dass das gehen soll
Wenn man sich regulär ein Video anschaut, läd er ja auch die ganze Datei runter, weil doch Video und Audiospur in der selben Datei sind.
Wie will man die Audiospur abspielen, ohne vorher alles runterzuladen?
Wenns doch geht bin ich echt erstaunt
greetz
Also das kommt bei mir immer, wenn ich angenommen die datei script.au3 compile, es aber im selben ordner schon eine script.exe gibt und diese ausgeführt wird.
ich glaube auch ehrlich das es daran liegt ;D
ganz sicher, dass das nich auch bei dir der fall ist?
schau die prozesse auch durch
Aus dem Codeteil wird mir jetzt erstmal nichts verständlich, aber vielleicht meinst du es ja so:
[autoit]$Zeichen = "-"
$a = 5
$b = 4
$ergebnis = Execute($a & $Zeichen & $b)
msgbox(0,"",$ergebnis)
Für $Zeichen kannst du nun + - * / oder was sonst noch geht (ka?:D) einsetzen.
Jetzt ist Helveticus bestimmt eh schon durcheinander xD
Dann halt
if (@hour > 14) or (@hour = 13 and @min >= 15) then..
Nein , das mit @hour > 13 statt 14 war schon richtig.
nein, weil um 14:10 wäre die bedingung nicht erfüllt.. weil das heißt ja wenn Stunde größer als 13 UND minute größer als 15NEIN Das kommt nicht aufs selber raus !!! !!! lies meinen post weiter oben!
ja wer war denn das
Ist auch falchs... weil dann laut Script auch 12:40 später als 13:15 wäre bsit du cnoh nciht ganz wach? immerhin sit halb 5
jetzt schläfst du aber Jonathan (nicht schnitzel^^)!!
Entweder hour größer 13, oder hour gleich 13 und min größer/Gleich 15.
Ist doch richtig
[autoit]
JA, das ist falschIf @Hour & @Min > 1315 Then
[/autoit]ist richtig
das ist beides richtig?!
lol danke^^
hatte eben das gefühl ich wurde geblitzt..
Bist du mitlerweile weiterkommen?^^
Ich schaffe es nichtmal, ne Nachricht an jemanden zu senden..
Welche Funktion brauch ich dafür?