hi,
danke das funzt. Damit hätten wir ein Problem gelöst. Aber ich brächte aus jedem Teil den ersten und den letzen und nur durch ".." getrennt. Das wird vom externem Programm als von - bis angesehen.
Thomas
hi,
danke das funzt. Damit hätten wir ein Problem gelöst. Aber ich brächte aus jedem Teil den ersten und den letzen und nur durch ".." getrennt. Das wird vom externem Programm als von - bis angesehen.
Thomas
hi,
meinst du so
For $r = 1 to UBound($Txt1,1)/2
FileWriteLine($PROTFILE, $txt1[$r] & @CRLF)
Next
und wie kann der zweite Teil ausgegeben werden und wie bekomme ich die Ausgabe in diesem Format 0001..1052 hin. Diese benötige ich so um sie im externen Programm über Send() wieder einzugeben.
Thomas
Hi,
ich habe für die Steuerung eines externen Programm ein kleines Script geschrieben. Es ruf in dem ext. Programm einen Rechnungsdruck auf, der über eine pdf Software(BroadGun) diese in einem pdf zusammen stellt. Nun schmiert die BroadGun Software mit aller regelmäßigkeit ab. Damit bricht alles ab. Nun bleibt mit nichts anderes übrig um die Größe zu verringen die RE Nummern in ein Array einzulesen. Doch wie kann ich es nun erreichen, das nur die Hälfte der im Array befindlichen RE Nummern an das externe Programm ausgegeben werden. Auch weis ich im Vorfeld nicht wieviel RE Nummern in der txt sind.In der txt Datei stehen sie untereinander von 0001 bis 2104 (können aber auch mehr sein) Sie sollen dann so ausgegeben werden Bsp.0001..1052. Nach erfolgter pdf Erstellung soll durch eine Schleife der Rest von 1053.. ausgegeben werden.
Kann mir bitte jemand eine Hilfestellung geben?
ThomasB
Hi,
danke es geht.
MFG Thomasb
Hallo,
danke erstmal. Ich hoffe das ich es richtig gelöst habe. Die ersten Test waren eigentlich gut.
$var= @YEAR & @MON
If StringInStr($frta[1], "ER2529") Then ; Eintrag ist vorhanden
If StringInStr($frta[2], "K;380") Then
If StringInStr($frta[2], $var , 34) Then
Ich hoffe es passt.
Mfg ThomasB
Hallo,
nun ist es ja festgeschrieben. Da diese Zeile eine sich ständig ändernde ist sprich sich auch Rechnungsnummern dort drin befinden weis ich nicht ob es so geht?
ThomasB
Hallo,
das ist der Wert der ich brauche ;20070601; Auch hat es irgendwie noch nicht recht gefunkt. Ich übe aber noch.
ThomasB
Hallo,
gut ich habe es so gelöst.
If StringReplace($frta[2], ";", ";") Then
$var = @YEAR & @MON
Nur zwei Frage habe ich noch wie bekomme ich den zweiten Wert(ist der wichtigere)
K;380;D--01/9013088758;9;20070604;20070601;20070630;31 und wie drehe ich dann die Variabele so das wieder so hinbekomme "@YEAR & "\" & @MON & " " & @YEAR"
MFG
ThomasB
geht doch noch nicht
Hallo,
ja gut kannst hier mal ein Beispiel machen wie das richtig geht, da es sich hier um fortlaufendes Datum handelt.
mfg
thomasb
Hallo gemeinde,
ich muss mal wieder eine kleine Frage stellen. Ich bekomme jeden Tag viele Eifact Rechnungen und die dazugehörigen EVNs. Meine Script läuft soweit gut.
#include <File.au3>
#include <date.au3>
#include <array.au3>
#include <string.au3>
Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
;
Global $pathMain = "C:\GLI_PROD\Mapping\EDI_Eingang\" & @MDAY & "." & @MON & "." & @YEAR & "_test" & ".txt"
Dim $pfad = "C:\GLI_PROD\Mapping\EDI_Eingang\"
Dim $string = _FileListToArray($pfad, "*.INH";) ; liest alle *.INH-Files in Array $string
Dim $match, $frta
Dim $arErgebnis[1]
Dim $arErgebnis1[1]
;Dim $pathMain
If Not IsArray($string) Then
MsgBox(16, "", "Keine Inhouse Datei(en) gefunden.. EXIT!";)
Exit
EndIf
For $i = 1 To $string[0] ; Dateiliste abarbeiten
_FileReadToArray($pfad & $string[$i], $frta)
If @error <> 0 Then
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei: " & $pfad & $string[$i] & @LF & "Fehler: " & @error)
Else
$match = _StringBetween($frta[2], "/", ";";) ; Wert in Zeile 2 auslesen
If Not @error Then
If StringInStr($frta[1], "ER2529";) Then ; Eintrag ist vorhanden
If StringInStr($frta[2], "K;380";) Then
_TAG ()
_ArrayAdd($arErgebnis, "Datei: " & $string[$i] & " mit RE.-Nr.: " & $match[0])
Sleep(1500)
ElseIf StringInStr($frta[2], "K;130";) Then ; Eintrag ist vorhanden
_TAG_EVN ()
Sleep(1500)
EndIf
_FileWriteFromArray($pathMain, $arErgebnis, 1)
EndIf
Else
;
MsgBox(4096, "", "In Datei: " & $string[$i] & " ist Nummer nicht enthalten.";)
EndIf
EndIf
Next
;
Func _TAG ()
If FileExists("C:\GLI_PROD\Mapping\ELFE_\Rechnung\Rechnung\" & @YEAR & "\" & @MON & " " & @YEAR & "\";) Then ; Ordner vorhanden
FileMove("C:\GLI_PROD\Mapping\EDI_Eingang\" & $string[$i], "C:\GLI_PROD\Mapping\ELFE_\Rechnung\Rechnung\" & @YEAR & "\" & @MON & " " & @YEAR & "\", 1)
Else
DirCreate("C:\GLI_PROD\Mapping\ELFE_\Rechnung\Rechnung\" & @YEAR & "\" & @MON & " " & @YEAR & "\";) ; Ordner anlegen mit Datum Jahr\Monat Jahr
FileMove("C:\GLI_PROD\Mapping\EDI_Eingang\" & $string[$i], "C:\GLI_PROD\Mapping\ELFE_\Rechnung\Rechnung\" & @YEAR & "\" & @MON & " " & @YEAR & "\", 1)
EndIf
EndFunc ;==>_TAG
Func _TAG_EVN ()
If FileExists("C:\GLI_PROD\Mapping\ELFE_\EVN\EVN\" & @YEAR & "\" & @MON & " " & @YEAR & "\";) Then ; Ordner vorhanden
FileMove("C:\GLI_PROD\Mapping\EDI_Eingang\" & $string[$i], "C:\GLI_PROD\Mapping\ELFE_\EVN\EVN\" & @YEAR & "\" & @MON & " " & @YEAR & "\", 1)
Else
DirCreate("C:\GLI_PROD\Mapping\ELFE_\EVN\EVN\" & @YEAR & "\" & @MON & " " & @YEAR & "\";) ; Ordner anlegen mit Datum Jahr\Monat Jahr
FileMove("C:\GLI_PROD\Mapping\EDI_Eingang\" & $string[$i], "C:\GLI_PROD\Mapping\ELFE_\EVN\EVN\" & @YEAR & "\" & @MON & " " & @YEAR & "\", 1)
EndIf
EndFunc ;==>_TAG_EVN
Nun habe ich aber das Problem, das während eines Monatszyklus das Datum in den Dateien wechselt.
Auszug aus der Zeile Mai
K;380;D--01/9005547731;9;20070501;20070501;20070531;31;;5608421124;;;;
Auszug aus der Zeile Juni
K;380;D--01/9005547854;9;20070601;20070601;20070630;31;;5608421124;;;;
Wie kann ich es erreichen das das Datum ausgewertet wird und in den richtigen Monatsordner verschoben wird. Momentan verschiebe ich alles in ein und denselben Monatsordner.
Vielleicht habt ihr ja ne Idee.
MFg
Thomas B
hi,
ok
ziel erkannt
thomasb
hi,
da die Dateien immer im gleichen Ordner liegen bleiben müssen habe ich ein Problem die richtige zuzuordnen. Da wäre es vieleicht gut diese über die Zeit abzuwickel oder nicht?
Thomas
mahlzeit kollegen,
habe da mal wieder ein kleines Problem. Über ein ftp bekomme ich zweimal täglich einmal um 09:00 und einmal um 18:00.
Func unrar($Fromfolder, $ext = "*.cdr.gz", $ToFolder = "", $copyFlag = 0)
Local $count = 0
If $ToFolder = "" Or $ToFolder = Default Then $ToFolder = "X:\Auftragsbearbeitung\CDR\" & @YEAR & "\" & @MON &" "& @YEAR & "\"
Local $fileList = _FileListToArray($Fromfolder, $ext)
If @error = 1 Then Return -1
For $i = 1 To UBound($fileList) - 1
If StringLeft(FileGetTime($Fromfolder & $fileList[$i], 1, 1), = @YEAR & @MON & @MDAY Then
Run("C:\Programme\WinRAR\Winrar.exe")
Sleep(1500)
Send("^O")
Sleep(1500)
Send("F:\Colt\" & $fileList[$i])
Send("{Enter}")
Sleep(1500)
Send("{Down}")
Sleep(1000)
Send("{ALTDOWN}e{ALTUP}")
Sleep(100)
Send("X:\Auftragsbearbeitung\CDR\" & @YEAR & "\" & @MON &" "& @YEAR & "\")
Send("{Enter}")
Sleep(1500)
Send("{Down}")
Sleep(1000)
Send("{ALTDOWN}e{ALTUP}")
Sleep(1000)
Send("X:\CDR`S Komplett\")
Send("{Enter}")
Sleep(1500)
Send('!{F4}')
$count += 1
EndIf
Next
SetError(0, $count)
Return 1
Das Script habe ich hier aus dem Forum bekommen. Es läuft auch super. Nun aber zu meinem eigentlichen Problem.
Wie kann es umgangen werden das wenn die Abenddatei entpackt wird auch die Frühdatei wieder entpackt wird. Kann man irgend wie eine Zeitabfrage mit einbauen (etwas so >12:00 Uhr).
mfg ThomasB
hi,
danke mit dem Runden war ein guter Tip
ThomasB
Hi, peethebee,
jupp daran hats gelegen. Dahätte ich wohl noch lange suchen können.
:keks:
Schönes WE
ThomasB
Hallo Leutz
Ich weis nicht ob es sich um eine Problem mit der Array handelt oder das Problem wo anders zu suchen ist.
Der Auszug aus meinem Script was per Mail verschickt wird.
Func _mail();==> Outlook Erfolgreich/Error
Dim $aRecords, $zeiten, $inhalt, $FileList
$Txt = "c:\Datensicherung\Timer.prob"
;
_FileReadToArray($Txt, $aRecords);==> Inhalt der Timer.prob
;
$FileList = _FileListToArray("c:\Datensicherung\", "*.fbk", 1);==> Pfadinhalt
;
$Outlook2003 = @ProgramFilesDir & "\Microsoft Office\Office11\Outlook.exe"
$PID = ProcessExists("Outlook.exe")
$Addresse = "c:\Datensicherung\"
$Ti = @HOUR & ":" & @MIN & ":" & @SEC
$Address= ("xx@xx.de")
$Subject= ("Tägliche Datensicherung vom " & _NowDate())
;
For $i = 1 To $aRecords[0];==> Beginn der ersten Schleife für Timer.prob
$zeiten &= $aRecords[$i] & @LF
Next
;
For $i = 1 To $FileList[0];==> Beginn der zweiten Schleife für Pfadinhalt
$inhalt &= $FileList[$i] & @LF
Next
;==> Ertsellung des E-Mail Body für Erfolg
$Body = ("Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & _
"Im Pfad " & $Addresse & " wurden folgende Dateien angelegt:" & @LF & _
$inhalt & @LF & _
"Die Laufzeiten der einzelnen Scripte betrugen:" & @LF & @LF & $zeiten & @LF & @LF & _
"Freundliche Grüße" & @LF & @LF & " Administrator")
;==> Ertsellung des E-Mail Body für Misserfolg
$Body_err = ("Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & _
"Im Pfad " & $Addresse & " wurden folgende Dateien angelegt:" & @LF & _
$inhalt & @LF & _
"Die Laufzeiten der einzelnen Scripte betrugen:" & @LF & @LF & $zeiten & @LF & @LF & _
"Freundliche Grüße" & @LF & @LF & " Administrator")
;
If FileExists("T:\Datensicherung\") Then; ==> Misserfolg
If $PID Then
_INetMail($address, $subject, $Body_err)
Sleep(5000)
Send("!s")
Else
Run($Outlook2003)
WinWaitActive("Posteingang - Microsoft Outlook")
_INetMail($address, $subject, $Body_err)
Sleep(5000)
Send("!s")
Sleep(1500)
Send("!{F4}")
EndIf
Else ;==> Erfolg
If $PID Then
_INetMail($address, $subject, $Body)
Sleep(5000)
Send("!s")
Else
Run($Outlook2003)
WinWaitActive("Posteingang - Microsoft Outlook")
_INetMail($address, $subject, $Body)
Sleep(5000)
Send("!s")
Sleep(1500)
Send("!{F4}")
EndIf
EndIf
EndFunc
Hier der Inhalt der Timer.prob
Tagesrohdaten von BT wurden nicht gefunden.
Tagesrohdaten von Verizon wurden nicht gefunden.
Tagesrohdaten von QSC f2z wurden nicht gefunden.
Tagesrohdaten von QSC f3y wurden nicht gefunden.
Tagesrohdaten wurden in 0.0333336173545334 Minuten erzeugt
Die Löschung der alten CDR's & EVN's dauerte 5.26137632948694e-007 Minuten
Die Datensicherung wurde in 0.0165667005164064 Minuten erstellt
und hier das was per Mail versendet wurde.
Die Tägliche Datensicherung wurde um 14:57:22 erfolgreich erstellt.
Im Pfad c:\Datensicherung\ wurden folgende Dateien angelegt:
adtg.fbk
adtg2.fbk
adtg3.fbk
Die Laufzeiten der einzelnen Scripte betrugen:
Tagesrohdaten von BT wurden nicht gefunden.
Tagesrohdaten von Verizon wurden nicht gefunden.
Tagesrohdaten von QSC f2z wurden nicht gefunden.
Tagesrohdaten von QSC f3y wurden nicht gefunden.
Tagesrohdaten wurden in 0.0333336173545334 Minuten erzeugt
Die Löschung der alten CDR's
Es wird einteil nicht mitübernommen. Woran kann es liegen?
MFg
ThomasB :hm:
hi,
wenn es so wäre ginge es. Sie sind alle auf eine Subform die immer den gleichen Namen hat. Somit ist es nicht so einfach wenn nicht die direkte ID angesprochen werden kann.
Ansonsten habe ich das mit dem ControlClick verstanden.
ThomasB
hallo,
Es handelt sich hier um ein ext. Programm(Navision) das Nachts mehrere Dateien einlesen soll. Nun kann ich die RadioButton nicht ansprechen, deshalb die Screenshots zum besseren Verständnis. In der Hilfe steht nur das mit ControlCommand man diese ansprechen kann. Das ist mein Problem, der Rest vor dem ControlCommand und danach funktioniert. Auch mit Mouseclick will nicht funktionieren da sich das Feld an unterschiedlichen Stellen öffnet.
Das würde ich gerne erreichen.
thomasb
hallo Leutz,
ich quäle mich hier mit der Aktivierung von RadioButton. Ich habe mal drei Bilder mit angehängt zum besseren Verständnis. Ich habe mich mit dem
[autoit]ControlCommand
[/autoit]befasst. Leider bekomme ich es nicht hin das einer aktiviert wird.
[autoit]ControlCommand("ADTG-Microsoft Business Solutions-Navision","Import CDR's","1000000002","Check","")
[/autoit]Wo liegt mein Fehler das es nicht klappen will? Hat wer noch einen Tip wie es geht?
MFG
ThomasB
hi,
ja eddy, es war zu diesem Zeitpunkt keine Datei vorhanden. Das hatte ich dann behoben dann gings. Allerdings mit $aRecords[1].. Bei dir ist eine Schleife drin, die ich jetzt erstmal teste. Ansonsten läuft es.
:keks: :keks: :keks:
Thomasb