Ach so meinst du das, probiere ich mal aus...
Beiträge von Fintan
-
-
Ich meine so natürlich...
AutoIt
Alles anzeigenSplashTextOn("", "Suche läuft...", 220, 40, 730, 388, 21) $timer = TimerInit() ; Suche nach Ordner AN-01-XXXX-8 Local $SuchOrdAngAlt = _FO_FolderSearch($OrdAngAlt2, '*' & $AngAltGanzNum, True, 3, 0, 0) $timer = Round(TimerDiff($timer) / 1000, 2) & ' sec' If $SuchOrdAngAlt = "" Then SplashOff() MsgBox(262144, $Inf, $OrdNix, 1) Else SplashOff() ShellExecute($SuchOrdAngAlt, "", $OrdAngAlt2, "open") Sleep(500) MsgBox(262144, $Inf, '' & @LF & _ 'Suchzeit = ' & $timer & @LF & @LF & _ $OrdAngAlt2 & @LF & @LF & _ $SuchOrdAngAlt, 8) Return EndIf
-
Ich habe doch eine IF.. Then.. Else Schleife.
Dann müßte ich ja 2 SplashOffs machen, 1. vor der MSBox und die 2. vor der ShellExecute, weil ich weiß ja nicht ob überhaupt ein Ordner gefunden wird! -
Ja, während der Func _FO_FolderSearch soll der SplashScreen gezeigt werden, weil bei der Funktion in der Firma langsam läuft und nichts angezeigt wird.
-
Hm ok, äh so bleibt der Splashtext auch da...
Wie müßt man das schreiben, dass der Splashtext zu geht?AutoIt
Alles anzeigen$timer = TimerInit() Local $SuchOrdAngAlt = _FO_FolderSearch($OrdAngAlt2, '*' & $AngAltGanzNum, True, 0, 0, 0) $timer = Round(TimerDiff($timer) / 1000, 2) & ' sec' While 1 SplashTextOn("", "Suche läuft...", 220, 40, 730, 388, 21) If $SuchOrdAngAlt = "" Then MsgBox(262144, $Inf, $OrdNix, 0.3) Else ShellExecute($SuchOrdAngAlt, "", $OrdAngAlt2, "open") Sleep(500) MsgBox(262144, $Inf, '' & @LF & _ 'Suchzeit = ' & $timer & @LF & @LF & _ $OrdAngAlt2 & @LF & @LF & _ $SuchOrdAngAlt, 8) EndIf SplashOff() WEnd
-
In der Firma ist der PC langsam, die Suche mit _FO_FolderSearch läuft länger, deswegen würde ich gerne,
während der Suche ein Splashtext anzeigen lassen, das geht auch, aber es schließt nicht mehr!
Nur was ist falsch?AutoIt
Alles anzeigen$timer = TimerInit() Local $SuchOrdAngAlt = _FO_FolderSearch($OrdAngAlt2, '*' & $AngAltGanzNum, True, 0, 0, 0) ; Suche nach Ordner 'AN-01-XXXX-XX' $timer = Round(TimerDiff($timer) / 1000, 2) & ' sec' While $SuchOrdAngAlt = "" Do SplashTextOn("", "Suche läuft...", 220, 40, 730, 388, 21) Until $SuchOrdAngAlt > "" SplashOff() WEnd If $SuchOrdAngAlt = "" Then MsgBox(262144, $Inf, $OrdNix, 0.3) Else ShellExecute($SuchOrdAngAlt, "", $OrdAngAlt2, "open") Sleep(500) MsgBox(262144, $Inf, '' & @LF & _ 'Suchzeit = ' & $timer & @LF & @LF & _ $OrdAngAlt2 & @LF & @LF & _ $SuchOrdAngAlt, 8) EndIf
-
@ Kanashius
Hm, ich weiß nicht wie/wo ich meine Pfade in dein Script schreiben soll, weil es 2 verschiede sind.
G:\Dateien\Kunden\ANGEBOT \ AUFTRAG
G:\Dateien\alte daten\Kunden\ANGEBOT \ AUFTRAGIch brauche schon die _FO_FolderSearch Suchfunktion, damit kann ich dann Ordner suchen die einen Unbekannten Ordner enthalten kann.
G:\Dateien\Kunden\AUFTRAG 2014\02-XXXX-14\01-8888-14Meine konstruierten Pfade sind etwas verwirrend, aber die brauche ich so konstruiert, damit das Script funktioniert...
-
-
Kanashius, ah du hast dir so eine Mühe gemacht, danke.
Hilfe lesen habe ich kein Problem, eher mit der Umsetzung, bin also wirklich noch Anfänger.Also mich würde nur die _goAngAlt Funktion in Zeile 232 im Script interessieren, alle anderen kann man lassen.Suchfunktion habe ich ja schon mit _FO_FolderSearch, hängt am Ende vom Script, mir ging es wirlich nur um die Umformulierung.
Habe gedacht, das sieht man im Script-fetzen von Oben.Und die 01-1111-12 wird mit 3 Inputs ausgelesen, worauf dann die einzelnen Suchen begründen ...
-
Interessante Möglichkeit, mich würde aber lieber die zuvor gefragte Select..case Variante interessieren..
Ich bräuchte halt ein konkretes beispiel mit einer meinen If--then Schleifen, damit ich verstehe wie sowas geht.Wie man vielleicht erkennen kann, will ich mit verschiedenen Eingaben mehrere Ordner durchsuchen.
- mit '01-1111-8' soll 'Angebot 2008' + 'alte Angebot 2008' oder 'alte Angebot 2008' mit 'AN-01-1111-8' -Ordnern durchsucht werden.
- mit '01-1111-12' soll 'Angebot 2012' + 'alte Angebot 2012' oder 'Auftrag 2012' oder 'Auftrag 2013' durchsucht werden.Das sind schon 5 Ordnersuchvarianten...
-
Hey danke, das ging dann mal schnell ...
-
Ich habe da eine verschachtelte If..Then Schleife, die sehr unübersichlich geworden ist und würde die gerne umwandeln
und habs zwar im Wiki gelesen, weiß aber nicht wie ich meine so umwandeln kann.Spoiler anzeigen
AutoIt: If..Then funktion
Alles anzeigenFunc _goAngAlt() Local $IAngA = GUICtrlRead($InpAngAlt3) ; Jahr auslesen '8' oder '11' Local $AngAltGanzNum = GUICtrlRead($InpAngAlt1) & '-' & GUICtrlRead($InpAngAlt2) & '-' & $IAngA ; = AngebotsNummer 'XX-XXXX-X' oder 'XX-XXXX-XX' Local $OrdAngAlt = $OrdAngJa & "20" & $IAngA & "\" ; Pfad zusammen setzen "G:\Dateien\Kunden\ANGEBOT " +'20'+'8' oder '11' If (StringLen($IAngA) < 2) Then $OrdAngAlt = $OrdAngJa & "20" & "0" & $IAngA & "\" ; wenn nur '8' dann '20'+'0'+'8' Local $OrdAngAlt2 = $OrdJahrAA & "20" & $IAngA & "\" ; Pfad zusammen setzen "G:\Dateien\alte Aufträge\Kunden\ANGEBOT " +'20'+'8' oder '11' If (StringLen($IAngA) < 2) Then $OrdAngAlt2 = $OrdJahrAA & "20" & "0" & $IAngA & "\" ; ; wenn nur '8' dann '20'+'0'+'8' If Not FileExists($OrdAngAlt) Or Not FileExists($OrdAngAlt & $AngAltGanzNum) Then ; normale 'ANGEBOT 20XX' oder 'ANGEBOT 20XX' + '01-XXXX-XX' If MsgBox(262144, $Inf, $LukAA, 0.3) = 1 Then Else If Not FileExists($OrdAngAlt2 & $AngAltGanzNum) Then ; alte Aufträge 01-2222-8 If MsgBox(262144, $Inf, $LukAA, 0.3) = 1 Then Else Local $SuchOrdAngAlt = _FO_FolderSearch($OrdAngAlt2, '*' & $AngAltGanzNum, True, 0, 0, 0) ; Suche nach Ordner 'AN-01-XXXX-XX' If Not (StringLen($SuchOrdAngAlt) > 10) Then ; alte Aufträge Suche: AN-01-2222-8 If MsgBox(262144, $Inf, $LukAA, 0.3) = 1 Then Else Local $SuchAngAlt2 = _FO_FolderSearch($OrdAufJa & "20" & $IAngA, $AngAltGanzNum, True, 2, 0, 0) ; Suche nach Ordner '01-XXXX-14' im AUFTRAG 2014 If $SuchAngAlt2 = "" Then ; alte Aufträge Suche 'AUFTRAG 20XX' +Suchfund If MsgBox(262144, $Inf, $LukAA, 0.3) = 1 Then Else Local $SuchAngAlt3 = _FO_FolderSearch($OrdAufJa & "20" & $IAngA + 1, $AngAltGanzNum, True, 2, 0, 0) ; Suche nach Ordner '01-XXXX-14' im AUFTRAG 2015 If $SuchAngAlt3 = "" Then ; alte Aufträge Suche 'AUFTRAG 20XX'+1 MsgBox(262208, 'Such-Info', 'Ordner Leider Nicht da!' & @LF & @LF & _ 'Such-Ordner = ' & $OrdAufJa & "20" & $IAngA + 1 & @LF & @LF & _ 'Such-Nummer = ' & $AngAltGanzNum, 11) Else ShellExecute($SuchAngAlt3, "", $OrdAufJa & "20" & $IAngA + 1, "open") ; öffnet alte Aufträge Suche 'AUFTRAG 20XX' + 1 +Suchfund +'01-XXXX-XX' Sleep(600) MsgBox(262144, 'Info', '' & @LF & _ $OrdAufJa & "20" & $IAngA + 1 & @LF & @LF & _ $SuchAngAlt3, 11) EndIf EndIf Else ShellExecute($SuchAngAlt2, "", $OrdAufJa & "20" & $IAngA, "open") ; öffnet alte Aufträge Suche 'AUFTRAG 20XX' +Suchfund +'01-XXXX-XX' Sleep(600) MsgBox(262144, 'Info', '' & @LF & _ $OrdAufJa & "20" & $IAngA & @LF & @LF & _ $SuchAngAlt2, 11) EndIf EndIf Else ShellExecute($SuchOrdAngAlt, "", $OrdAngAlt2, "open") ; öffnet alte Aufträge Suche 'ANGEBOT 200X' + 'AN-01-XXXX-XX' Sleep(600) MsgBox(262144, 'Info', '' & @LF & _ $OrdAngAlt2 & @LF & @LF & _ $SuchOrdAngAlt, 11) EndIf EndIf Else ShellExecute($AngAltGanzNum, "", $OrdAngAlt2, "open") ; öffnet alte Aufträge 'ANGEBOT 20XX' + '01-XXXX-XX' EndIf EndIf Else ShellExecute($AngAltGanzNum, "", $OrdAngAlt, "open") ; öffnet normale 'ANGEBOT 20XX' + '01-XXXX-XX' EndIf EndFunc ;==>_goAngAlt
-
Habe jetzt kein extra Wiki-Beitrag gesehen, falls es hier falsch einfach verschieben...
Beim durchlesen sind mir folgende Fehler im Text aufgefallen:
Syntax von If-Abfragen:
...zu verlgichen = zu vergleichen
...ausgeführt wurdewar = ausgeführt wurde
...und mehrt = und kehrtim Beispielkasten:
vor dem letzten EndIf, zahl groß = ZahlRückgabewerte von Funktionen:
...ob die Ausfürhung = Ausführung -
Guten Morgen Raupi
Danke für deine Mühe, jeztzt geht es doch mit Stringlen,
ich hatte nur eine Variable falsch plaziert in Zeile 153, weswegen es nicht klappte.Case $Jump2AngAlt
Local $IAA = GUICtrlRead($InpAngAlt3) ; ließt die Zahl 9 aus
$OrdAngAlt = $OrdAngJa & "20" & $IAA & "\" ; bei 2 Zahlen (10) = Angebot 2010
If (StringLen($IAA) < 2) Then $OrdAngAlt = $OrdAngJa & "20" & "0" & $IAA & "\" ; wenn nur 1 Zahl (9), dann addierts Null dazu = Angebot 2009
ShellExecute($OrdAngJa & "20" & $IAA & "\", "", "", "open") <- falsche Variable so nicht
ShellExecute($OrdAngAlt, "", "", "open") ; so funktionierts jetztmanchmal muß man einfach noch mal eine Nacht drüber schlafen
und in Zeile 202 dann so:; wie in meinem Beispiel Oben
Func _goAngAlt()Local $IAA = GUICtrlRead($InpAngAlt3) ; ließt die Zahl 9 aus
Local $AngAltGanzNum = GUICtrlRead($InpAngAlt1) & '-' & GUICtrlRead($InpAngAlt2) & '-' & $IAA ; setzt 01-1234-9 zusammen
$OrdAngAlt = $OrdAngJa & "20" & $IAA & "\" ; bei 2 Zahlen (10) = Angebot 2010
If (StringLen($IAA) < 2) Then $OrdAngAlt = $OrdAngJa & "20" & "0" & $IAA & "\" ; wenn nur 1 Zahl (9), dann addiert Null dazu = Angebot 2009If Not FileExists($OrdAngAlt & $AngAltGanzNum) Then
MsgBox(64, $Fel, $OrdNix, 2)
Else
ShellExecute($AngAltGanzNum, "", $OrdAngAlt, "open")
EndIf
EndFunc ;==>_goAngAlt -
Hallo Raupi
Hm, triffts leider nicht ganz, jetzt kommt bei 1Zahl als Ergebnis "Angebot 20 9" also ein Leerzeichen drin, somit findet er den Ordner nicht,
bei 2 Zahlen funktionierts.
gebraucht werden aber 2 variablen mit der Abfrage bei Eingabe von 1Zahl, einmal mit aufgefüllter Null "09", einmal nur so"9"So soll es sein bei Eingabe 1Zahl, z.B.: 9, "...\Angebot 2009\01-1234-9:
$OrdAngAlt immer mit Null sein = "Angebot 2009", weil einen Ordner "Angebot 20 9" gibts nicht!
$AngAltGanzNum = 01-1234-9 (alle vor 2010 nur 1Zahl als letztes)So soll es bei Eingabe 2Zahlen sein, z.B.: 10, "...\Angebot 2010\01-1234-10":
$OrdAngAlt ließt 2 stellige Zahl aus, also 10 = "Angebot 2010"
$AngAltGanzNum = 01-1234-10 (alle nach 2009 2Zahlen als letztes) -
Hallo
Vorweg, ich nutze noch: autoit3.exe - AU3Check (3.3.10.0), AutoIt3Wrapper v.2.1.4.3, SciTE v.3.5.1.0
Bin in der Zeit von Damals stehen geblieben... Evtl. könnt Ihr mir deswegen nicht weiterhelfen, aber ich probiere es mal.Ich will mit 'stringlen' ein Input prüfen und müßte jetzt eine If...Then schleife konstruieren, da weiß ich nicht weiter.
Im Hauptordner sind "Angebot 2009", Unterordner 01-1234-9 (alle vor 2010 nur 1Zahl als letztes)
Im Hauptordner sind "Angebot 2010", Unterordner 01-1234-10 (alle nach 2010 2Zahlen als letztes)- Wenn im Input $IAA nur 1 Zahl eingegeben wurde, dann soll eine Null vorne angehängt werden
- Wenn im Input $IAA 2 Zahlen eingegeben wurden, dann soll die Zahl so belassen werden
- $OrdAngAlt muß als Ausgabe also immer mit Null sein, also "Angebot 2009" weil einen Ordner "Angebot 209" gibts nicht!
- Wobei $AngAltGanzNum auch nur eine Zahl als letztes haben kann 01-1234-9 (alle vor 2010 nur 1Zahl als letztes)Hier mal das ganze Script
Ich habe mir das in Zeile 203 mit einer MSGBox ausgeben lassen um zu sehen was ich erhalte.
evtl. kann man ja auch eine Globale Varialble machen, weil ich muß das ganze auch in Zeile 150 machen.Wenn was unklar ist fragt.
-
Aaahhh ja, vielen Dank Bioshade, das war der richtige Hinweis.
Ich frage die Eingabefelder in den jeweiligen Funktionen ab und jetzt funktioniert es wie es soll, super.Für das Forum habe ich den Pfad verändert, mit der Script-Veränderung findet er die Ordner.
-
Hallo
Vorweg, ich nutze noch: autoit3.exe - AU3Check (3.3.10.0), AutoIt3Wrapper v.2.1.4.3, SciTE v.3.5.1.0
Bin in der Zeit von Damals stehen geblieben... Evtl. könnt Ihr mir deswegen nicht weiterhelfen, aber ich probiere es mal.Ich habe Eingabefelder in die Oberfläche hinzu gefügt und jetzt bringt er mir zwar keine Fehlermeldungen, aber der Ordner-Springer funktioniert nicht!
Ich vermute es liegt an den Zeilen 225 + 235, das da die Zahlen nicht ausgelesen werden können, aber ich weiß jetzt nicht mehr weiter.Fehler: Wenn ich in die Inputs (Zeile 80,90 + 100,110) Zahlen vorgebe, dann springt er mit Zahleneingabe und diesen Vorgaben in die Ordner.
Wenn ich aber keine Vorgaben mache, springt er nirgends hin, obwohl die Ordner da sind, sondern bringt gleich die MSGBox, dass nix gefunden wurde!An was kann das liegen, was ist da falsch?
Fragt, wenn ich mich unklar ausgedrückt habe, danke schon mal.
-
[autoit]
GUICtrlCreateInput("", 53, 30, 35, 20)
[/autoit]
GUICtrlSetLimit(-1, 4); begrenzt das Input auf 4Edit: Oscar war schneller...
-
Ein Blick in die Hilfedatei von SciTE4AutoIt3 erklärt auch noch folgendes:
#Obfuscator_Parameters=/MergeOnly oder /MO
Will produce a scriptfile as AUT2EXE includes in the Compiled EXE. This allows you to find the proper linenumber when errors are reported.Ein Blick in Jos AutoIt3Wrapper_beta_SciTE4AutoIt3 läßt auf ein undokumentierten Parameter blicken:
#Obfuscator_Parameters=/reportWas der Parameter macht, müßte man mal ausprobieren... vielleicht hilft das dann weiter.