1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. ru642

Beiträge von ru642

  • Bilder kopieren & umbennen für eine Stream anzeige

    • ru642
    • 31. Dezember 2017 um 02:00

    Hallo Liebe Autoit Gemeinde

    Ich möchte die neuste Bilddatei aus einem Ordner kopieren und umbennen.

    Beispiel ich habe im Ordner Bilder folgendes Bild: Treasure Trail - Medium - 2017.12.26_13-40-38.png

    Nun möchte ich dies in den Ordner Stream kopieren und den Zeitstempel löschen.

    Wenn ein aktuelleres Bild kommt sollte dies natürlich überschrieben werden.

    Im Ordner Bilder habe ich viele Bilder ca. 600.

    Ich habe leider schon lange nichts mehr mit Autoit mehr gemacht und bin aktuell total ratlos wie ich das am besten mache.

    Ich möchte keine Lösung sondern einen Denkanstoss welche Befehle ich benötige um das umzusetzten :)

    Vielen Dank bereits im Voraus.

    Euer Ru642

  • Ich benötige einen Denkanstoss beim kopieren von Dateien

    • ru642
    • 21. August 2017 um 08:53
    Zitat von Dreamworker

    Hallo zusammen,
    ich habe mal versucht, klappt leider nicht.

    $arSearch=_findFilesWithString("s:\2017",".nef") oder auch $arSearch=_findFilesWithString("s:\2017",".nef") zu nutzen , beides geht nicht.

    Das Programm hat ja folgende Funktion, es liest die Bildnamen ein die mit einem Stern gekennzeichnet sind aus der Datei Test.csv.
    Danach kopiert er die Dateien .

    Mir ist aufgefallen das du in beiden Fällen den * nicht verwendet hast. $arSearch=_findFilesWithString("s:\2017",".*nef") oder auch $arSearch=_findFilesWithString("s:\2017",".*nef")

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 18. August 2017 um 11:39

    Hallo Oscar
    ich will die Nutzungsdauer wissen.
    Am besten pro Tag darum auch das Datum.
    So kann ich am besten rausfiltern wieviel eine Applikation über den Zeitraum von einer Woche oder Monat benutzt wurde.

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 18. August 2017 um 09:40

    Kann ich das Irgendwie austriksen in dem ich z.B. Time durch das Datum ersetzte und pro Benutzer ein File erstellen lasse ?

    AutoIt
    Global $sIniFile = @ScriptDir & '\Time\' & @UserName & '.ini'
    Global $iProcTime = IniRead($sIniFile,'Protocol',@MDAY & "."& @MON & "."& @YEAR ,0)
    AdlibRegister('_AddTime', 1000)
    ;HotKeySet('{ESC}', '_Exit')
    While Sleep(1000)
    WEnd
    ;Func _Exit()
    ;	If ProcessExists('firefox.exe') Then Return
    ;	IniWrite($sIniFile,'Protocol', 'Time', $iProcTime)
    ;	Exit
    ;EndFunc
    Func _AddTime()
    	If ProcessExists('notepad.exe') Then
    		$iProcTime += 1
    		ToolTip(_FormatTime($iProcTime))
    		IniWrite($sIniFile,'Protocol',@MDAY & "."& @MON & "."& @YEAR, @UserName & ":" & _FormatTime ($iProcTime))
    	EndIf
    EndFunc
    Func _FormatTime($iSec)
    	Local $iHour, $iMin
    	$iHour = Int($iSec / 3600)
    	$iSec = Mod($iSec, 3600)
    	$iMin = Int($iSec / 60)
    	$iSec = Mod($iSec, 60)
    	Return StringFormat('%02i:%02i:%02i', $iHour, $iMin, $iSec)
    EndFunc   ;==>_FormatTime
    Alles anzeigen
  • Ich benötige einen Denkanstoss beim kopieren von Dateien

    • ru642
    • 17. August 2017 um 16:39
    Zitat von Dreamworker

    $arSearch=_findFilesWithString("s:\2017","\d{4}-SUN-(.*nef)")

    Hallo Dreamworker es ist die von mir zitierte Zeile die nach Dateien mit Endung *nef sucht.
    Du wirst dich auf diesen Teil konzentrieren müssen: "\d{4}-SUN-(.*nef)")
    Vielleicht mal "\d{4}-SUN-(.*nef)") durch "_SUN-(.*nef)") ersezten und mal schauen was passiert.
    Dies müsste dann nur die Dateien nehmen die anderst (rum) beschriftet sind.


    Um es den anderen im Forum leichter zu machen verwende bei Code bitte die Code Funktion.
    Diese findest du im Editor ganz rechts und sieht so aus: </>
    Danach in der Syntax Hervorhebung Autoit anwählen :D

    Edit:
    Die Dateien sind auch anderst aufgebaut:
    2017-SUN-10743.nef
    _SUN1409.nef

    mfg Ru642

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 17. August 2017 um 11:00

    Hallo Oscar
    ich habe nun deinen Script etwas erweitert.
    Da ich noch nie mit Filewrite beschäftigt habe besteht noch eine Frage.
    Wie genau kann ich verhindern das Einträge überschrieben werden.
    Beispiel aktuell sieht das File folgendermassen aus:
    [Protocol]
    Time=17.08.2017/scr:00:00:22

    Ich möchte nun aber verhidnern das die Zeit von Benutzer scr am nächsten Tag überschrieben wird + es kann auch ein anderer Benutzer den Script ausführen dann würde die ja auch wieder alles überschreiben.

    Etwas in die Richtung und ich wäre glücklich bis zum Mond und zurück:

    [Protocol]
    Time=16.08.2017/mat:00:05:11
    Time=17.08.2017/scr:00:00:22
    Time=17.08.2017/mab:01:00:05
    Time=18.08.2017/scr:00:10:22
    usw.

    Trotzdem schon vielen, vielen Dank für die unglaublich grosse Hilfe!

    Aktueller Script:

    AutoIt
    Global $sIniFile = @ScriptDir & '\TimeProtocol.ini'
    Global $iProcTime = IniRead($sIniFile, 'Protocol', 'Time', 0)
    AdlibRegister('_AddTime', 1000)
    HotKeySet('{ESC}', '_Exit')
    While Sleep(1000)
    WEnd
    Func _Exit()
    	If ProcessExists('firefox.exe') Then Return
    	IniWrite($sIniFile, 'Protocol', 'Time', $iProcTime)
    	Exit
    EndFunc
    Func _AddTime()
    	If ProcessExists('firefox.exe') Then
    		$iProcTime += 1
    		ToolTip(_FormatTime($iProcTime))
    		IniWrite($sIniFile, 'Protocol', 'Time', @MDAY & "."& @MON & "."& @YEAR & "/"& @UserName & ":" & _FormatTime ($iProcTime))
    	EndIf
    EndFunc
    Func _FormatTime($iSec)
    	Local $iHour, $iMin
    	$iHour = Int($iSec / 3600)
    	$iSec = Mod($iSec, 3600)
    	$iMin = Int($iSec / 60)
    	$iSec = Mod($iSec, 60)
    	Return StringFormat('%02i:%02i:%02i', $iHour, $iMin, $iSec)
    EndFunc   ;==>_FormatTime
    Alles anzeigen


    Mfg Ru642

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 17. August 2017 um 10:25

    Hallo Oscar

    ich habe nun bei der Func AddTime () den IniWrite($sIniFile, 'Protocol', 'Time', $iProcTime) auch noch hinzugefügt.
    Nun wird ein ini-File erstellt und in dieses die Zeit hinzugefügt.
    Nun habe ich festgestellt das im File keine Formatierung hh/mm/ss besteht.
    Wie setzt man dies am besten um ?

    Edit: Habe mir hier einfach die bereits bestehende Funktion _FormatTime zu nutze gemacht. :)

    AutoIt
    Global $sIniFile = @ScriptDir & '\TimeProtocol.ini'
    Global $iProcTime = IniRead($sIniFile, 'Protocol', 'Time', 0)
    AdlibRegister('_AddTime', 1000)
    HotKeySet('{ESC}', '_Exit')
    While Sleep(1000)
    WEnd
    Func _Exit()
    	If ProcessExists('Notepad.exe') Then Return
    	IniWrite($sIniFile, 'Protocol', 'Time', $iProcTime)
    	Exit
    EndFunc
    Func _AddTime()
    	If ProcessExists('Notepad.exe') Then
    		$iProcTime += 1
    		ToolTip(_FormatTime($iProcTime))
    		IniWrite($sIniFile, 'Protocol', 'Time', $iProcTime)
    	EndIf
    EndFunc
    Func _FormatTime($iSec)
    	Local $iHour, $iMin
    	$iHour = Int($iSec / 3600)
    	$iSec = Mod($iSec, 3600)
    	$iMin = Int($iSec / 60)
    	$iSec = Mod($iSec, 60)
    	Return StringFormat('%02i:%02i:%02i', $iHour, $iMin, $iSec)
    EndFunc   ;==>_FormatTime
    Alles anzeigen
  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 17. August 2017 um 09:49

    Hallo Oscar

    deine Version gefällt mir sehr gut, wollte mich erst später dann mit dem Filewrite beschäftigen, wäre aber so oder so auf dieses zurückgekommen.

    Leider habe ich noch ein schwerwiegendes Problem und zwar wird kein ini File erstellt.;(
    Der Tooltip zeigt aber an das hochgezählt wird.

    Edit: habe ich bereits selber hingekriegt ^^

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 16. August 2017 um 17:38

    Hallo Kanashius
    Danke für deinen Script, leider komme ich mit diesem leider überhaupt nicht mehr draus. :S
    Ich habe den Script mal ausgeführt und dieser loggt brav alle fenster die ich öffne & schliesse.
    In meinem Fall brauche ich nicht viel, nur 1 Programm soll geloggt werden.
    Es geht darum dem Kunden die Nutzungsdauer des Programms zu verrechnen.
    Desshalb muss diese irgendwie festgehalten werden.

    Ich habe deinen auskommentierten Teil erneut in den Script eingepflegt und getestet erhalte aber eine Fehlermeldung.
    Ich gehe mal davon aus das ein then zu viel ist ?

    AutoIt
    If true Then _ArraySearch($arFilter,$pname)<>-1 Then
    If true Then _ArraySearch($arFilter,$pname)^ ERROR

    Hier noch mein Versuch den ich vor deiner Nachricht erstellt hatte:


    AutoIt
    HotKeySet("{ESC}", "Terminate")
    Func Terminate()
        Exit
    EndFunc   ;==>Terminate
    
    
    Local $aTime
    Local $eTime
    Local $activeProcess = 0
    Local $activeRunning = 0
    
    
    
    
    
    
    While 1
    $Process = ProcessExists ("notepad.exe")
    If $Process >0 Then
    $activeProcess =1
    
    
    If $activeProcess = 1 and $activeRunning = 0 Then
    ConsoleWrite ($aTime)
    $activeRunning =1
    $aTime = @HOUR & ":" & @MIN & ":" & @SEC
    
    
    If $activeProcess = 1 and $activeRunning = 1 and $Process = 0 Then
    $activeProcess =0
    $activeRunning =0
    $eTime = @HOUR & ":" & @MIN & ":" & @SEC
    Else
       Sleep (20)
    $activeProcess =0
    $activeRunning = 0
    EndIf
    EndIf
    EndIf
    WEnd
    Alles anzeigen

    MFG Ru642

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 16. August 2017 um 11:37

    Hallo Alpines danke für deine Antwort.

    Ich habe nun die Abfrage in die Schleife mit aufgenommen aber nun wird natürlich die Zeit immer wieder ausgegeben.
    Wie kann ich das einmalig ausgeben ?

    Hier mein angepasster Script:

    AutoIt
    HotKeySet("{ESC}", "Terminate")
    Func Terminate()
        Exit
    EndFunc   ;==>Terminate
    
    
    Local $aTime
    Local $eTime
    Local $activeProcess = 0
    
    
    
    
    While 1
    If ProcessExists ("notepad.exe") Then
    $activeProcess =1
    
    
    If $activeProcess = 1 Then
    $aTime = @HOUR & ":" & @MIN & ":" & @SEC
    ConsoleWrite ($aTime)
    $activeProcess = 0
    Else
       Sleep (20)
    
    
    EndIf
    EndIf
    WEnd
    Alles anzeigen
  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • ru642
    • 16. August 2017 um 10:30

    Hallo Liebe Autoit Community

    Ich stehe leider mal wieder vor einem Problem.
    Ich möchte je einen Zeitstempel schreiben wenn ein Programm (bei meinem Test notepad.exe) geöffnet / geschlossen wurde.
    Ich denke man sieht was ich machen möchte die Variablen $aTime (Startzeit), $eTime (Endzeit) sollten per korrektem Script gefüllt werden.
    Folgendes sind meine kläglichen Versuche:

    AutoIt
    HotKeySet("{ESC}", "Terminate")
    Func Terminate()
        Exit
    EndFunc   ;==>Terminate
    
    
    Local $aTime
    Local $eTime
    Local $activeProcess = 0
    ConsoleWrite ($activeProcess)
    
    
    While 1
    If ProcessExists ("notepad.exe") Then
    $activeProcess =1
    Else
       Sleep (20)
    EndIf
    WEnd
    
    
    If $activeProcess = 1 Then
    $aTime = @HOUR & ":" & @MIN & ":" & @SEC
    Alles anzeigen

    Ich bedanke mich bereits im Voraus für eure wertvolle Hilfe!
    Mfg Ru642

  • automatisches einlesen von Ein-Klick-Voreinstellungen (Ricoh Drucker)

    • ru642
    • 19. Juli 2017 um 14:40

    Perfekt vielen Dank an alle funktioniert nun wie gewünscht!

  • automatisches einlesen von Ein-Klick-Voreinstellungen (Ricoh Drucker)

    • ru642
    • 19. Juli 2017 um 14:33

    @Sonderbaar es funktionert :D

    Aber wenn ich den Script starte zeigt es mir jedes mal den Array an kann man das irgendwie unterdrücken ?

  • automatisches einlesen von Ein-Klick-Voreinstellungen (Ricoh Drucker)

    • ru642
    • 19. Juli 2017 um 13:43

    Diese "komischen" Werte sind bereits die Dateinamen. :) Beispielsweise "A4H f 2S geheftet.json".
    Die Dateiendung muss aber im Fenster nicht angegeben werden weil man ja danach sucht.

    Folgendes Steht im ConsolWrite:

    Items in the array: 24
    23
    A4H f 2S geheftet
    A4H f 2S
    A4H f doppelseitig geheftet
    A4H f doppelseitig
    A4H f geheftet
    A4H f
    A4H sw 2S geheftet
    A4H sw 2S
    A4H sw doppelseitig geheftet
    A4H sw doppelseitig
    A4H sw geheftet
    A4H sw
    A4Q f 2S geheftet
    A4Q f 2S
    A4Q f geheftet
    A4Q f
    A4Q sw 2S geheftet
    A4Q sw 2S
    A4Q sw geheftet
    A4Q sw
    Broschüre A4
    Broschüre
    RK-Deckblatt
    >Exit code: 0 Time: 0.08779

  • automatisches einlesen von Ein-Klick-Voreinstellungen (Ricoh Drucker)

    • ru642
    • 19. Juli 2017 um 13:26

    Hallo Zusammen
    wir haben im Geschäft zwei identische Ricoh Drucker.
    Für diese haben wir sogenannte Ein-Klick-Voreinstellungen.
    Sind Papiereinstellungen die man importieren kann und dann anwählen.
    Nun kann man diese wie bereits angedeutet einlesen.
    Leider haben wir ca 23 Voreinstellungen die wir jedes Mal einlesen müssen pro Drucker.
    Die Import Funktion unterstützt kein Multi Import somit muss jedes der Files einzeln angeklickt und importiert werden.
    Folgendes habe ich nun schon gemacht: die Funktion Anwaehlen funktionierte soweit.

    AutoIt
    Func Anwaehlen ()
    ;Warten bis das Fenster aktiv ist
    WinActivate ("Liste Ein-Klick-Voreinstellungen verwalten")
    Sleep (200)
    ;Klick Button Importieren
    ControlClick("Liste Ein-Klick-Voreinstellungen verwalten", "", "[CLASS:Button; INSTANCE:7]")
    Sleep(200)
    ;Senden des Filenamens im Textfeld
    ControlSend ("Öffnen", "", "[CLASS:Edit; INSTANCE:1]", "$list")
    Sleep (200)
    ;Betätigen des Öffnen Buttons
    ControlClick("Öffnen", "", "[CLASS:Button; INSTANCE:1]")
    EndFunc
    
    
    
    
    Local $iMax
    Local $list = "A4H f 2S geheftet|A4H f 2S|A4H f doppelseitig geheftet|A4H f doppelseitig|A4H f geheftet|A4H f|A4H sw 2S geheftet|A4H sw 2S|A4H sw doppelseitig geheftet|A4H sw doppelseitig|A4H sw geheftet|A4H sw|A4Q f 2S geheftet|A4Q f 2S|A4Q f geheftet|A4Q f|A4Q sw 2S geheftet|A4Q sw 2S|A4Q sw geheftet|A4Q sw|Broschüre A4|Broschüre|RK-Deckblatt"
    Local $arr = StringSplit($list, "|")
    
    
    If IsArray($arr) Then
         $iMax = UBound($arr); get array size
    
    
         ConsoleWrite("Items in the array: " & $iMax & @LF)
    
    
         For $i = 0 to $iMax - 1; subtract 1 from size to prevent an out of bounds error
             ConsoleWrite($arr[$i] & @LF)
         Next
    EndIf
    Alles anzeigen


    Nun möchte ich aber unter 9. den Array $list abrufen und pro durchlauf einen Dateinamen holen.
    Leider habe ich schon echt lange nicht mehr mit Arrays gearbeitet und bin mir desshalb nicht mehr sicher wie ich das aufbauen soll.
    Die If Abfrage habe ich mir aus der Hilfe kopiert soll natürlich am ende kein Consolwrite machen.
    Ich hoffe ihr könnt mir helfen.
    MFG Ru642

  • Programme als Administrator starten

    • ru642
    • 11. Juli 2017 um 17:20

    Hallo mumpel

    das habe ich gerade in der englischen Hilfe gefunden:

    AutoIt
    #include <AutoItConstants.au3>
    
    
    Example()
    
    
    Func Example()
        ; Change the username and password to the appropriate values for your system.
        Local $sUserName = "Username"
        Local $sPassword = "Password"
    
    
        ; Run Notepad with the window maximized. Notepad is run under the user previously specified.
        Local $iPID = RunAs($sUserName, @ComputerName, $sPassword, $RUN_LOGON_NOPROFILE, "notepad.exe", "", @SW_SHOWMAXIMIZED)
    
    
        ; Wait 10 seconds for the Notepad window to appear.
        WinWait("[CLASS:Notepad]", "", 10)
    
    
        ; Wait for 2 seconds.
        Sleep(2000)
    
    
        ; Close the Notepad process using the PID returned by RunAs.
        ProcessClose($iPID)
    EndFunc   ;==>Example
    Alles anzeigen

    Aktuell startest du ja das notepad mit dem aktuellen User + dem hinterlegten Password. -> möglicherweise stimmen die nicht überein

    Grüsse Ru642

  • Random Sleep Time

    • ru642
    • 2. Juli 2017 um 17:04

    Danke an ProgrammingDonkey das war der Grund habe nun die Variable in die Schleife genommen.
    @alpines ist nix schlimmes meine Tastatur hat die möglichkeit per Random Button die Farbe zu wechseln auf irgendwas und wollte zum Spass diese per Autoit zu einer zufälligen Zeit drücken lassen :D
    Danke für die schnelle Hilfe!
    Mfg Ru642

  • Random Sleep Time

    • ru642
    • 2. Juli 2017 um 16:46

    Hallo Zusammen
    ich möchte die Random Fuktion dazu benutzen einen Random Sleep Time zurückzugeben.
    Bin aber aktuell etwas ratlos warum es mir nun die Random Nummer gespeichert hat und diese nicht erneut würfelt.

    Code
    HotKeySet ("{ESC}","terminate")
    Func terminate ()
       exit 0
    EndFunc
    
    
    $rt = random(500, 2000, 1)
    
    
    
    
    while 1
    MouseClick ("left")
    Sleep($rt)
    ConsoleWrite ($rt)
    WEnd
    Alles anzeigen

    Würde mich freuen wenn mir jemand das Licht am ende des Tunnels zeigen würde. :D
    mfg Ru642

  • Daten auslesen und vergleichen nur auf Verzeichnisstruktur (keine Files auslesen)

    • ru642
    • 30. Juli 2014 um 13:33

    Vielen Dank für deinen Ansatz aber ich krige bei der ersten Zeile schon einen Syntax Error.

    - ERROR: syntax error Global $a_Folders[]

    Spoiler anzeigen
    [autoit]

    Global $a_Folders[] = ["C:\temp\test\1","C:\temp\test\2","C:\temp\test\3"] ; Alle Ordner in denen gesucht werden soll
    Global $s_FileExtensions = "txt|xml|log" ; Alle zu findenden Dateitypen

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

    ; Den eingrenzenden Monat angeben:
    Global $d_Month = @Mon
    Global $d_Year = @YEAR

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

    Global Const $s_FileExtPattern = "(?i)\.(?:" & $s_FileExtensions & ")$" ; Hilfsvariable welche aus $s_FileExtensions ein RegEx-Pattern macht

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

    ; Alle Pfade in $a_Folders durchgehen
    For $s_RootPath In $a_Folders
    ; Alle Dateien im aktuellen Ordner $s_RootPath durchgehen:
    $h_FFFF = FileFindFirstFile($s_RootPath & "\*.*") ; Startet die Dateisuche
    If Not @error Then
    Do
    $s_File = FileFindNextFile($h_FFFF)
    If @error Then ExitLoop ; Falls keine Datei mehr gefunden wurde
    If @extended Then ContinueLoop ; Falls Fund ein Ordner statt einer Datei
    If Not StringRegExp($s_File, $s_FileExtPattern) Then ContinueLoop ; Falls keine der angegebenen Dateiendungen

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

    ; Zeit der Datei feststellen (hier: Änderungsdatum/Zeit)
    $a_FileTime = FileGetTime($s_File)
    If @error Then ContinueLoop
    If Not ($a_FileTime[0] = $d_Year And $a_FileTime[1] = $d_Month) Then ContinueLoop ; Falls Datei nicht aus aktuellem Monat / Jahr

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

    ConsoleWrite($s_RootPath & "" & $s_File & @CRLF)
    Until 0
    EndIf
    FileClose($h_FFFF)
    Next

    [/autoit]

    Was mache ich hier noch falsch? Habe mir hierzu noch 3 Test Ordner eingerichtet und Test Files erstellt.

  • Daten auslesen und vergleichen nur auf Verzeichnisstruktur (keine Files auslesen)

    • ru642
    • 30. Juli 2014 um 11:17

    Die Platzierung ist schon korrekt. Bin leider etwas eingerostet.
    Die Frage ist eher wie ich dies Realisieren kann.
    Beispiele von Funktionen die sich verwenden lassen können.
    Bin parallel dazu auch am schauen wie ich das machen kann.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™