hi,
das array ist leer-->bzw es wird nichts angezeigt
_ArrayDisplay($arErgebnis, "Titel")
taucher
hi,
das array ist leer-->bzw es wird nichts angezeigt
_ArrayDisplay($arErgebnis, "Titel")
taucher
hi,
es wird keine datei angelegt!?!?
#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\12 2006\" &@MDAY&"."&@MON &"."& @YEAR&".xls"
Dim $pfad = "C:\GLI_Prod\12 2006\"
Dim $string = _FileListToArray($pfad, "*.INH") ; liest alle *.INH-Files in Array $string
Dim $match, $frta
DIm $arErgebnis
;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[2], "K;380") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & " " & $match[0],2)
;_Rechnung()
_ArrayAdd($arErgebnis, $match[0])
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
ElseIf StringInStr($frta[2], "K;130") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & " " & $match[0],2)
;_EVN()
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
EndIf
Else
MsgBox(4096, "", "In Datei: "& $string[$i] & " ist Nummer nicht enthalten.")
EndIf
EndIf
Next
_FileWriteFromArray($pathMain, $arErgebnis,1)
Exit
ich habe $arErgebnis auf dim gestellt.
mache ich noch was falsch? oder bin ich blind
taucher
hi,
ich musste nochmal das thema aufmachen, da ich noch eine frage zu _FileWriteFromArray habe. ich habe es eigebaut, aber es wird nur eine nummer eingetragen.
so _FileWriteFromArray($pathMain, $match,1,0) ein eintrag
_FileWriteFromArray($pathMain, $match[0],1,0) kein eintrag
#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\12 2006\" &@MDAY&"."&@MON &"."& @YEAR&".xls"
Dim $pfad = "C:\GLI_Prod\12 2006\"
Dim $string = _FileListToArray($pfad, "*.INH") ; liest alle *.INH-Files in Array $string
Dim $match, $frta
;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
;_File()
If StringInStr($frta[2], "K;380") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & " " & $match[0],2)
;_Rechnung()
_FileWriteFromArray($pathMain, $match,1,0)
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
ElseIf StringInStr($frta[2], "K;130") Then ; Eintrag ist vorhanden
;MsgBox(4096, "", "vorhanden bei datei: "&$frta[$i])
;_EVN()
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
EndIf
EndIf
Next
wenn ich das thema über fileopen mache dann läuft es durch doch dann bekomme ich eine fehlermeldung
C:\Programme\AutoIt3\Include\File.au3 (178) : ==> Unable to open file, the maximum number of open files has been exceeded.:
$hFile = FileOpen($sFilePath, 0)
Func _File()
FileOpen($pathMain,1)
FileWriteLine($pathMain, $match[0] & @CRLF)
FileClose($pathMain)
EndFunc
wie kann ich es besser regeln?
taucher
hi,
![]()
danke es geht. :keks:
schönes we
taucher
hi,
dank aber er rauscht gleich durch bis zur letzen msgbox. er liest nichts in array ein.was kann das sein?
das mit _filefromarray ist dann ja falsch wenn ich nur die selectierten nummern aus der zeile 2 haben möchte.
taucher
hi,
so zur hälfte habe konnte ich das problem lösen, neue version geholt geht. aber wie kann ich nun eine varibale damit bedienen, da ja in jeder zweiten zeile eine andere nummer steht?
mein versuch geht schief. mit _filewritefromarry schreibe ich dann in eine datei?
#include <File.au3>
#include <date.au3>
#include<array.au3>
Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
$flta = _FileListToArray("C:\GLI_Prod\12 2006\", "*.INH")
Global $string = _FileListToArray("C:\GLI_Prod\12 2006\", "*.INH")
Global $flta = _StringBetween($string,"/", ";")
If Not IsArray($flta) Then Exit MsgBox(16, "", "Keine Inhouse Datei(en) gefunden.. EXIT!")
For $i = 1 To $flta[0]
Dim $aRecords
If Not _FileReadToArray("C:\GLI_Prod\12 2006\"&$flta[$i],$aRecords) Then
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei Fehler:" & @error)
Exit
EndIf
For $x = 1 To $aRecords[0]
If StringInStr($aRecords[$x], "K;380") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "&$flta[$i]& "" &$flta)
;_Rechnung()
Sleep(1500)
ExitLoop
EndIf
If StringInStr($aRecords[$x], "K;130") Then ; Eintrag ist vorhanden
;MsgBox(4096, "", "vorhanden bei datei: "&$flta[$i])
;_EVN()
Sleep(1500)
ExitLoop
EndIf
Next
Next
danke
taucher
hallo,
@th.meger
ich bekomme
C:\Programme\AutoIt3\Include\StringMid1.au3(9,50) : ERROR: _StringBetween(): undefined function.
Global $found2 = _StringBetween($string, "/", ";")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Include\StringMid1.au3 - 1 error(s), 0 warning(s)
habe ich was vergessen?
da es sich um rechnungsnummern handelt ändert sich diese zahl.
was bewirkt der _stringbetween? habe in der hilfe nichts gefunden
Taucher
Sorry da habe ich beim ersten Beitrag etwas vergessen.
Es sollte so sein
StringMid("K;380;o2/402661239;9;20070109;20061201;", 10, 9)
Gesucht wird diese Nummer 402661239 oder ähnliche
So sieht der Anfang aus.
S;o2 MOBILFUNK;80001266_2;20070108;1243
K;380;o2/402661239;9;20070109;20061201;20061231;3;402661239;40035812;80001266_2;Keine Rechnung nach
Taucher
nabend,
habe da ein kleines Problem mit der Zeile 2 von 80 Dateien. Das einlesen in ein Array läuft. Bei StringMid mit statischem Text das geht auch. Nur wie ich genau in der Zeile 2 suchen kann ist mir unklar. Auch steht immer eine andere Zahl dort die ich in einer txt zur Kontrolle benötige.
Beispiell
so sieht die Zeile 2 immer aus.(EDIFACT-Datei)
K;380;o2/402661239;9;20070109;20061201;20061231;3;402661239;40035812;80001266_2
Sorry was vergessen
StringMid("K;380;o2/402661239;9;20070109;20061201;", 10, 9)
Danke für jeden Hinweis
Taucher
hallo,
ja das war es danke :keks:
thx
hallo,
ok habe ich gemacht aber jetzt kopiert er nichts mehr.
#include <File.au3>
$flta = _FileListToArray("C:\Programme\AutoIt3\Test\", "*.txt")
If Not IsArray($flta) Then Exit MsgBox(16, "", "Keine txt dateien gefunden.. EXIT!")
For $i = 1 To $flta[0]
Dim $aRecords
If Not _FileReadToArray("C:\Programme\AutoIt3\Test\"&$flta[$i],$aRecords) Then
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei Fehler:" & @error)
Exit
EndIf
For $x = 1 To $aRecords[0]
If StringInStr($aRecords[$x], "keine Verbindung") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "&$flta[$i])
_kopieren()
Sleep(1500)
ExitLoop
EndIf
Next
Next
Func _kopieren()
FileCopy("C:\Programme\AutoIt3\Test"&$flta[$i], "C:\Programme\AutoIt3\Test\Thomas\")
EndFunc
thx
hallo
danke genau das ist es. wie kann ich die gefunden dateien sauber kopieren?
da klemmt es auch noch einwenig.
mein ansatz
FileCopy("C:\Programme\AutoIt3\Test"&$flta, "C:\Programme\AutoIt3\Test\Taucher_2006\")
da kopiert er aber alle und nicht nur die gefundenn.
thx
nabend Kollegen,
ich habe da ein Problem mit einem Ordner, der ca 100 csv Dateien hat. Diese csv Dateien haben im Inhalt einen bestimmten Zeichensatz. das Suchen nach diesem Zeichensatz habe ich schon geschafft. Nur mein Problem ist die Menge der Dateien die unterschiedliche Namen haben. Ich habe momentan keine Kennung wie ich es bewerkstelligen soll. Kann das mit einer Schleife und Wildcard abgehandelt werden. Hat wer einen Lösungaansatz?
hier ist meiner
#include <File.au3>
Dim $aRecords
If Not _FileReadToArray("C:\Programme\AutoIt3\Test\*.txt",$aRecords) Then
MsgBox(4096,"Error", " Fehler beim Einlesen der Datei Fehler:" & @error)
Exit
EndIf
For $x = 1 to $aRecords[0]
If StringInStr($aRecords[$x], "80001166_2") Then ; Eintrag ist vorhanden
MsgBox(4096,"","vorhanden")
ExitLoop
EndIf
Next
Danke für eure Hilfe :hm:
hi,
ich habe wohl gestern im falschen film mitgespielt. ich habe nur mit SciTe geteste. nach dem kompilieren ging es. werde jetzt erstmal testen.
:keks:
mfg taucher
hi,
es kann kein zweites script getartet werden.
taucher
hallo,
danke für deine antwort. das habe ich soweit verstanden. doch mit diesem aufbau blockier ich mir weiter Autoit Scripts. ich wollte es direct eintragen als dienst, (mit srvnay.exe habe ich schon einen dienst zulaufen der im stunden rhytmus arbeitet) damit es im hintergrund arbeiten kann. Gibt es noch eine andere Lösung?
taucher
moin moin,
sollte das so aus sehen ?
While $Ti="10:20"
While 1
If Not FileExists ($pathCompare) Then
_Liste()
EndIf
Sleep(12000)
If Not _FileReadToArray($pathCompare, $compare_A) Then
_errormail1()
Exit
EndIf
If Not _FileReadToArray($pathMain, $mainFile_A) Then
_errormail2()
Exit
EndIf
For $i = 1 To UBound($compare_A) - 1
If StringRight($compare_A[$i], 4) = ".CDR" Then
_ArraySearch($mainFile_A, $compare_A[$i], 1)
If @error = 6 Then
_ArrayAdd($mainFile_A, $compare_A[$i])
_verizon()
Sleep(120000)
EndIf
EndIf
Next
If _FileWriteFromArray($pathMain, $mainFile_A, 1, 0) Then
FileDelete($pathCompare)
EndIf
WEnd
Mfg Taucher_2006
nabend,
klar hier ist es
#include <file.au3>
#include <Array.au3>
#include <INet.au3>
#include <date.au3>
Global $pathMain = "C:\Programme\AutoIt3\Include\Referenz.prob"
Global $pathCompare = "C:\Programme\AutoIt3\Include\taeglich.txt"
Global $mainFile_A
Global $oldFile_A = $mainFile_A
Global $compare_A
$Outlook2003 = @ProgramFilesDir & "\Microsoft Office\Office11\Outlook.exe"
$PID = ProcessExists("Outlook.exe")
$Ti=@HOUR & ":" & @MIN & ":" & @SEC
If $Ti="17:50:00" Then
If Not FileExists ($pathCompare) Then
_Liste()
EndIf
Sleep(12000)
If Not _FileReadToArray($pathCompare, $compare_A) Then
_errormail1()
Exit
EndIf
If Not _FileReadToArray($pathMain, $mainFile_A) Then
_errormail2()
Exit
EndIf
For $i = 1 To UBound($compare_A) - 1
If StringRight($compare_A[$i], 4) = ".CDR" Then
_ArraySearch($mainFile_A, $compare_A[$i], 1)
If @error = 6 Then
_ArrayAdd($mainFile_A, $compare_A[$i])
_verizon()
Sleep(120000)
EndIf
EndIf
Next
If _FileWriteFromArray($pathMain, $mainFile_A, 1, 0) Then
FileDelete($pathCompare)
EndIf
Func _verizon()
run("cmd.exe")
Sleep(500)
send('x:{enter}')
Sleep(500)
Send('cd xcftp\scripts{enter}')
Sleep(1000)
Send('get_file CDRs ')
Send($compare_A[$i])
Send('{Enter}')
Sleep(120000)
Send('exit')
Send('{enter}')
EndFunc
Func _Liste()
Run("cmd.exe")
Sleep(500)
send('x:{enter}')
Sleep(500)
Send('cd xcftp\scripts{enter}')
Sleep(1000)
Send('list_directory CDRs')
Send('{Enter}')
Sleep(60000)
Send('list_directory CDRs')
Sleep(1000)
Send(' > X:\xcftp\etc\taeglich.txt')
Send('{Enter}')
Sleep(3000)
Send('exit')
Send('{enter}')
EndFunc
Func _errormail1()
$Ti=@HOUR & ":" & @MIN & ":" & @SEC
$Address=("xxx@ag.de")
$Subject=("Fehler im Ladenvorgang der CDRs!")
$Body = (" Die für den Ladenvorgang benötigte Datei im Pfad " & $pathMain & " wurden um " & $Ti & " nicht gefunden." & @LF & @LF & _
" Der Ladevorgang wurde erfolglos beendet." & @LF & @LF & _
" Freundliche Grüßen" & @LF & @LF &" Ihre Fileserver")
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")
EndIf
EndFunc
Func _errormail2()
$Ti=@HOUR & ":" & @MIN & ":" & @SEC
$Address=("xxx@ag.de")
$Subject=("Fehler im Ladenvorgang der CDRs!")
$Body = (" Die für den Ladenvorgang benötigte Datei im Pfad " & $pathCompare & " konnte um " & $Ti & " nicht erstellt werden." & @LF & @LF & _
" Der Ladevorgang wurde erfolglos beendet." & @LF & @LF & _
" Freundliche Grüße" & @LF & @LF &" Ihre Fileserver")
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")
EndIf
EndFunc
MFG
Taucher
Hallo,
habe lange getestet un ddas Script läuft. Nun wollte ich es als Dienst laufen lassen. Dazu habe ich einen Zeitschlüssel eingebaut und die Anweisungen zum Dienst befolgt. Leider starte es nicht. Woran kann es liegen? Kann mir wer helfen.
MFG Taucher_2006
[autoit]$Ti=@HOUR & ":" & @MIN & ":" & @SEC
[/autoit][autoit][/autoit][autoit]If $Ti="17:25:00" Then
If Not FileExists ($pathCompare) Then
_Liste()
EndIf
nabend kollegen,
ich glaube das ich mein beschriebenes Problem nach langem Kampf mit der Hife gelöst habe. Ich hoffe jedenfalls das es der Weg ist. Ich habe die Func an einen anderen für mich noch nicht verständlichen Teil eingebaut. Seitdem geht es.
; Dateivergleich anhängen der Unterschiede
;in abgeänderter Form in der Func
#include <file.au3>
#include <Array.au3>
Global $pathMain = "c:\Programme\Autoit3\Include\Referenz.prob"
Global $pathCompare = "c:\Programme\Autoit3\Include\taeglich.txt"
Global $mainFile_A
Global $oldFile_A = $mainFile_A
Global $compare_A
If Not _FileReadToArray($pathMain, $mainFile_A) Then
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIf
If Not _FileReadToArray($pathCompare, $compare_A) Then
MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
Exit
EndIf
For $i = 1 To UBound($compare_A) - 1
;MsgBox(0,"", "Ich nehme jetzt " & $compare_A[$i] & " und werde gleich gucken ob es mit .cdr endet",5 )
If StringRight($compare_A[$i], 4) = ".cdr" Then
;MsgBox(0,"", $compare_A[$i] & " endet mit cdrund deshalb gucke ich jetzt ob es schon in der Ursprungsdatei steht",5 )
_ArraySearch($mainFile_A, $compare_A[$i], 1)
If @error = 6 Then
_ArrayAdd($mainFile_A, $compare_A[$i])
_verizon()
Sleep(2000)
EndIf
;MsgBox(0, "" , $compare_A[$i] &" ist nicht enthalten")
EndIf
Next
Func _verizon()
run("cmd.exe")
Sleep(500)
send('cd\{enter}')
Sleep(500)
Send($compare_A[$i])
Sleep(1000)
Send('{Enter}')
Sleep(1000)
Send("exit")
Send('{Enter}')
EndFunc
_FileWriteFromArray($pathMain, $mainFile_A, 1, 0)
;RunWait(@ComSpec & ' /c start ' & $pathMain, '', @SW_HIDE)
Wenn das nicht der richtige Weg ist sagt mir bescheid.
MFG Taucher_2006
PS: Gluck gluck weg war er!!!!! :schild4: