BugFix , ich denke mal das es ein FTP Ordner bzw. ein anderer PC ist, und die Sternchen die IP ![]()
@Rev, in welcher Zeile kommt denn der Fehler?
BugFix , ich denke mal das es ein FTP Ordner bzw. ein anderer PC ist, und die Sternchen die IP ![]()
@Rev, in welcher Zeile kommt denn der Fehler?
Wenn du in Live HTTP Headers nicht auf Header, sondern auf Generator gehst, kriegst du eine einfache POST Abfrage geliefert. Die kannst du dann so einbauen:
POST /powerq1/login.php loginName=Benutzer&loginPwd=Passwort&btnLogin=Anmelden
$hOpen = _WinHttpOpen()
$hConnect = _WinHttpConnect($hOpen, "192.168.1.233")
$hRequest = _WinHttpOpenRequest($hConnect, "GET", "/powerq1/login.php")
_WinHttpSendRequest($hRequest)
_WinHttpReceiveResponse($hRequest)
_WinHttpCloseHandle($hRequest)
$hRequest = _WinHttpOpenRequest($hConnect, "POST", "/powerq1/login.php", "HTTP/1.1")
_WinHttpSendRequest($hRequest, "Content-Type: application/x-www-form-urlencoded" & @CRLF, "loginName=Benutzer&loginPwd=Passwort&btnLogin=Anmelden")
_WinHttpReceiveResponse($hRequest)
_WinHttpCloseHandle($hRequest)
Bei meiner Funktion muss jetzt kein Filter mehr rein ![]()
Ich weiß das deine Funktion ebenso die Feiertage enthält, aber ich wollte halt meine eigene basteln, und die liefert halt ein etwas anderes Array zurück ![]()
Ich habe einen Feiertagskalender geschrieben, vielleicht kann den jemand von euch brauchen.
Ich weiß, das BugFix einen ähnlichen geschrieben hat, aber meiner gibt wirklich nur die gesetzlichen Feiertage zurück und lässt Tage wie Muttertag, Vatertag, Valentinstag etc. außen vor. Weiterhin kann nach Bundesländern sortiert werden.
Ich habe es für ein Programm gebraucht, das an Feiertagen nicht laufen soll, sonst aber rund um die Uhr.
Hier dann das Script:
;===============================================================================
; Function Name.....: _DateLegalHolidays($sState = "All", $iYear = @Year)
; Description.......: Gibt alle deutschen gesetzlichen Feiertage mit Datum in einem Array aus
; Parameter(s)......: $sState = Bundesland (Standard = All)
; ALL = Alle Feiertage
;~ BW = Baden-Württemberg
;~ NI = Niedersachsen
;~ BY = Bayern
;~ NW = Nordrhein-Westfalen
;~ BE = Berlin
;~ RP = Rheinland-Pfalz
;~ BB = Brandenburg
;~ SL = Saarland
;~ HB = Bremen
;~ SN = Sachsen
;~ HH = Hamburg
;~ ST = Sachsen-Anhalt
;~ HE = Hessen
;~ SH = Schleswig-Holstein
;~ MV = Mecklenburg-Vorpommern
;~ TH = Thüringen
; Return Value(s)...: Erfolg - Gibt Ein Array aus, in der ersten Dimension stehen die Daten, in der zweiten der Namen des Feiertages.
; $avHolidayReturn[0][0] gibt die Anzahl an Feiertagen für das Bundesland an
; Fehler
; Author(s).........: TheLuBu ([email='LuBu@veytal.com'][/email])
; Remarks...........: Using Gauss algorithm for Computus
; Copyright.........: TheLuBu ([email='LuBu@veytal.com'][/email])
;===============================================================================
Func _DateLegalHolidays($sState = "All")
Local $iYear, $avHolidayDate[12][3], $iModStart, $iModDiv, $iModLast, $iHolidayDay, $iHolidayMonth, $iFirstAdvent, $avHolidayReturn[16][2], $iRow = 0
For $i = 24 To 1 Step -1
If _DateToDayOfWeek($iYear, 12, $i) = 1 Then
If StringLen($i) = 1 Then
$i = "0" & $i
EndIf
$iFirstAdvent = $iYear & "/12/" & $i
ExitLoop
EndIf
Next
$iDivYear = Int($iYear / 100)
$iModStart = Mod(19 * Mod($iYear, 19) + $iDivYear - Int($iDivYear / 4) - Int(($iDivYear - Int(($iDivYear +
/ 25) + 1) / 3) + 15, 30)
$iModDiv = Mod(32 + 2 * Mod($iDivYear, 4) + 2 * Int(Mod($iYear, 100) / 4) - $iModStart - Mod(Mod($iYear, 100), 4), 7)
$iModLast = $iModStart + $iModDiv - 7 * Int((Mod($iYear, 19) + 11 * $iModStart + 22 * $iModDiv) / 451) + 22
If $iModLast - 31 < 1 Then
$iHolidayDay = $iModLast
Else
$iHolidayDay = $iModLast - 31
EndIf
If $iModLast > 31 Then
$iHolidayMonth = "04"
Else
$iHolidayMonth = "03"
EndIf
$avHolidayDate[0][0] = $iYear & "/" & $iHolidayMonth & "/" & $iHolidayDay
$avHolidayDate[0][1] = "Ostersonntag"
$avHolidayDate[0][2] = "All"
$avHolidayDate[1][0] = _DateAdd("D", -2, $avHolidayDate[0][0])
$avHolidayDate[1][1] = "Karfreitag"
$avHolidayDate[1][2] = "All"
$avHolidayDate[2][0] = _DateAdd("D", 1, $avHolidayDate[0][0])
$avHolidayDate[2][1] = "Ostermontag"
$avHolidayDate[2][2] = "All"
$avHolidayDate[3][0] = _DateAdd("D", 39, $avHolidayDate[0][0])
$avHolidayDate[3][1] = "Christi Himmelfahrt"
$avHolidayDate[3][2] = "All"
$avHolidayDate[4][0] = _DateAdd("D", 50, $avHolidayDate[0][0])
$avHolidayDate[4][1] = "Pfingstmontag"
$avHolidayDate[4][2] = "All"
$avHolidayDate[5][0] = _DateAdd("D", 60, $avHolidayDate[0][0])
$avHolidayDate[5][1] = "Fronleichnam"
$avHolidayDate[5][2] = "BW,BY,HE,NW,RP,SL"
$avHolidayDate[6][0] = @YEAR & "/10/03"
$avHolidayDate[6][1] = "Tag der Deutschen Einheit"
$avHolidayDate[6][2] = "All"
$avHolidayDate[7][0] = @YEAR & "/01/01"
$avHolidayDate[7][1] = "Neujahr"
$avHolidayDate[7][2] = "All"
$avHolidayDate[8][0] = @YEAR & "/05/01"
$avHolidayDate[8][1] = "Maifeiertag"
$avHolidayDate[8][2] = "All"
$avHolidayDate[9][0] = @YEAR & "/11/01"
$avHolidayDate[9][1] = "Allerheiligen"
$avHolidayDate[9][2] = "BW,BY,NW,RP,SL"
$avHolidayDate[10][0] = @YEAR & "/12/25"
$avHolidayDate[10][1] = "1. Weihnachtstag"
$avHolidayDate[10][2] = "All"
$avHolidayDate[11][0] = @YEAR & "/12/26"
$avHolidayDate[11][1] = "2. Weihnachtstag"
$avHolidayDate[11][2] = "All"
$avHolidayDate[12][0] = @YEAR & "/01/06"
$avHolidayDate[12][1] = "Heilige Drei Könige"
$avHolidayDate[12][2] = "BW,BY,ST"
$avHolidayDate[13][0] = @YEAR & "/08/15"
$avHolidayDate[13][1] = "Maria Himmelfahrt"
$avHolidayDate[13][2] = "SL"
$avHolidayDate[14][0] = @YEAR & "/10/31"
$avHolidayDate[14][1] = "Reformationstag"
$avHolidayDate[14][2] = "BB,MV,SN,ST,TH"
$avHolidayDate[15][0] = _DateAdd("D", -11, $iFirstAdvent)
$avHolidayDate[15][1] = "Buß und Bettag"
$avHolidayDate[15][2] = "SA"
If $sState <> "All" Then
For $i = 0 To UBound($avHolidayDate) - 1
If $avHolidayDate[$i][2] = "All" Or $avHolidayDate[$i][2] = $sState Then
$iRow += 1
$avHolidayReturn[$iRow][0] = $avHolidayDate[$i][0]
$avHolidayReturn[$iRow][1] = $avHolidayDate[$i][1]
EndIf
Next
ReDim $avHolidayReturn[$iRow + 1][2]
$avHolidayReturn[0][0] = $iRow
Return $avHolidayReturn
Else
Return $avHolidayDate
EndIf
EndFunc ;==>_DateLegalHolidays
Da die Standardfunktion von AutoIt für die neuen Excelversionen nicht mehr funktioniert, hab ich eine neue Funktion dafür geschrieben.
Derzeit kann man als xlsx, xlsb, xlsm, csv, txt, prn und xls Speichern, andere Dateiendungen such ich noch raus und editier sie dann hier rein
;===============================================================================
; Function Name: _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
; Description: Speichert eine Exceldatei in einem bestimmten Format ab
; Parameter(s): $oExcel Ein Excelobject, wie es von _ExcelbookOpen oder _ExcelbookNew zurückgegeben wird
; $Fileformat Der Dateityp, in dem gespeichert werden soll (xlsx, xlsb, xlsm, xls, csv, txt, prn)
; $NewFilepath Speicherort und Dateiname der neuen Datei
; $Close = True Soll nach dem Speichern das Objekt geschlossen werden? (Standard = True)
; Return Value(s): Erfolg Gibt 1 zurück
; Fehler @error 1 - $oExcel ist kein Objekt
; 2 - $Fileformat ist keine bekannte Dateiendung oder Formatnummer
; Author(s): TheLuBu ([email='LuBu@veytal.com'][/email])
; Copyright: TheLuBu ([email='LuBu@veytal.com'][/email])
;===============================================================================
Func _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
Switch $Fileformat
Case 51, "xlsx", ".xlsx"
$Fileformat = 51
Case 50, "xlsb", ".xlsb"
$Fileformat = 50
Case 52, "xlsm", ".xlsm"
$Fileformat = 52
Case 6, "csv", ".csv"
$Fileformat = 6
Case -4158, "txt", ".txt"
$Fileformat = -4158
Case 36, "prn", ".prn"
$Fileformat = 36
Case 56, "xls", ".xls"
$Fileformat = 56
Case Else
Return SetError(2, 0, 0)
EndSwitch
With $oExcel
.Application.DisplayAlerts = False ; Schaltet Fehlermeldungen bei Excel aus
.ActiveWorkBook.SaveAs($NewFilepath, $Fileformat)
If $Close Then
.ActiveWorkbook.Close ; Schließt die Tabelle
.Quit ; Schließt das Workbook
EndIf
EndWith
Return 1
EndFunc ;==>_ExcelSaveAsEX
for $i = 0 to UBound($a) - 1
GUICtrlCreateListViewItem($a[$i],$lv)
Next
$a[0] von _Stringbetween ist keine Anzahl
du hast nichts von Unterordnern gesagt ![]()
Wenn du mit Unterordnern durchsuchen und kopieren arbeiten willst, dann schau dir mal Rekursive Filesuche von Bugfix an, die bezieht auch Unterordner mit ein.
Zu beachten wäre noch, das du die Deklaration von $Path mit änderst, also bei einem weiteren Ordner wäre es
[autoit]Local $Path[3][3]
[/autoit]#include <File.au3>
#Include <Array.au3>
Local $Path[2][3]
$Path[0][0] = "C:\Users\" & @UserName & "\AppData\Local\test"
$Path[0][1] = "D:\Backup\test"
$Path[0][2] = "*.pdf"
$Path[1][0] = "C:\Users\" & @UserName & "\Favorites"
$Path[1][1] = "D:\Backup\Favorites"
$Path[1][2] = "*"
For $i = 0 To UBound($Path) - 1
$List = _FileListToArray($Path[$i][0], $Path[$i][2])
If @error = 4 Then
ConsoleWrite("Im Ordner " & $Path[$i][0] & " wurden keine Dateien gefunden")
ElseIf @error = 1 Then
ConsoleWrite("Ordner " & $Path[$i][0] & " wurden nicht gefunden")
Else
For $k = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$k], $Path[$i][1] & "\" & $List[$k], ![]()
Next
EndIf
Next
Hatte doch geschrieben ERSETZEN, nicht drüber schreiben ![]()
-EDIT- Hab grade gemerkt, das 2mal auf den Ordner geprüft wird, hier jetzt das angepasste
Geh mal auf "Ereigniseigenschaften" auf der rechten Seite, da dann auf Details, XML Ansicht und dann such den Wert zwischen
<Channel>WERT</Channel>
Ist das "DirectShow" ?
Poste bitte deinen gesamten Code, in meinem Code hab ich das nicht ![]()
ach mist
hab zweimal $I genutzt, dann kommt der mit den Indexen durcheinander ![]()
Ersetz mal bitte die Zeilen 17-19 hiermit
For $k = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$k], $Path[$i][1] & "\" & $List[$k], ![]()
Next
Wenn Du es so stehen lässt, und der Ordner nicht existiert dann beendet er das ganze Script.
Ich habe dir jetzt mal ein Array gebastelt und alles in eine Schleife gesetzt. Der Code wird dadurch kürzer und du musst nur einmal auf Fehler abfragen, das gilt dann für alle durchsuchten Ordner.
Local $Path[2][3]
$Path[0][0] = "C:\Users\" & @UserName & "\AppData\Local\test"
$Path[0][1] = "D:\Backup\test"
$Path[0][2] = "*.pdf"
$Path[1][0] = "C:\Users\" & @UserName & "\Favorites"
$Path[1][1] = "D:\Backup\Favorites"
$Path[1][2] = "*"
For $i = 0 To UBound($Path) - 1
$List = _FileListToArray($Path[$i][0], $Path[$i][2])
If Not @error = 4 Then
$exist = DirGetSize($Path[$i][0])
If $exist = -1 Then
ConsoleWrite($Path[$i][0] & " wurde nicht gefunden")
ContinueLoop
EndIf
For $i = 1 To $List[0]
FileCopy($Path[$i][0] & "\" & $List[$i], $Path[$i][1] & "\" & $List[$i], ![]()
Next
Else
ConsoleWrite("Im Ordner " & $Path[$i][0] & " wurden keine Dateien gefunden")
EndIf
Next
ich habe da ein
[autoit]Exit
[/autoit]eingebaut, du könntest aber auch nur entweder ( bei einer Funktion) Return oder bei einer Schleife Exitloop bzw. Continueloop nutzen. Ich seh deinen restlichen Code aber leider nicht, den müsstest du auch posten, damit ich weiter helfen kann ![]()
Das hier hatte ich mal rausgesucht für einen Debugger:
If @Compiled Then
If StringInStr($cmdlineraw, "*") = 0 Then ; Wenn kein Sternchen in der Kommandozeile steht
If StringInStr($cmdlineraw, "-admin") = 0 Then ; Wenn nicht im Adminmodus gestartet wurde
Opt("TrayIconHide", 1) ; Versteckt das Icon
If @Compiled Then ; Wenn das Script compiliert ist
$x = Run(@ScriptName & " *") ; Startet die kompilierte Exe normal
Else ;Wenn das Script nicht compiliert ist
$x = Run('"Autoit3.exe" "' & @ScriptFullPath & '" *') ; Startet das Script normal
EndIf
ProcessWait($x, 5) ; wartet auf das neu gestartete Script
While ProcessExists($x) ; Während das neue Script läuft
If WinActive("AutoIt Error") Then
Sleep(100)
_FileWriteLog(@ScriptDir & "\MIS Server\server.log", "Fehler im Programm")
_OnAutoItError(WinGetText("AutoIt Error")) ; wartet auf das AutoIT Fehlerfenster
EndIf
Sleep(20) ;Schläft 20 Milisekunden
WEnd
Exit
Else ; Wenn das Programm im Adminmodus gestartet wird, dann
Opt("TrayIconHide", 1)
If @Compiled Then
$x = Run(@ScriptName & " * -admin") ;Startet die kompilierte mit Adminrechten
Else
$x = Run('"Autoit3.exe" "' & @ScriptFullPath & '" * -admin'); Startet das Script mit Adminrechten
EndIf
ProcessWait($x, 5)
While ProcessExists($x) ; Während das neue Script läuft
If WinActive("AutoIt Error") Then
Sleep(100)
_FileWriteLog(@ScriptDir & "\MIS Server\server.log", "Fehler im Programm")
_OnAutoItError(WinGetText("AutoIt Error")) ; wartet auf das AutoIT Fehlerfenster
EndIf
Sleep(20) ;Schläft 20 Milisekunden
WEnd
Exit
EndIf
EndIf
EndIf
Wenn du dir es anschaust, siehst du, das du auch 2 Programme in einer Datei haben kannst, jeweils über Parameter beim starten ( Ich hatte einen Adminmodus eingebaut, um generelle Einstellungen zu ändern, die der normale Benutzer nicht ändern dürfen sollte
)
Benutz doch bitte die AutoitCode Buttons, um den Text richtig darzustellen.
Du musst noch eine Abfrage machen, wenn keine Dateien gefunden werden.
$Path = "C:\Users\"&@UserName&"\AppData\Local\test"
$Newpath = "D:\Backup\test"
$sFilter = "*.pdf"
$List = _Filelisttoarray($Path, $sFilter)
If NOT @error = 4 Then
$exist = dirgetsize($path)
If $exist = -1 then
MsgBox(16, "Fehler", "Verzeichnis wurde nicht gefunden")
Exit
EndIF
For $i = 1 To $List[0]
FileCopy($Path&"\"&$List[$i], $newpath&"\"&$List[$i], ![]()
Next
Else
Msgbox(16, "Fehler", "Es wurden keine Dateien gefunden")
EndIf
was du machen könntest, wäre noch ein weiteres Feld (Falls-Schleife ENDE) in der Linken Listview, die das ganze beendet.
Wenn du das nicht machst, wären keine verschachtelten If´s möglich.
Return geht nur in einer Funktion, dachte der Ausschnitt wäre aus einer.
Dann mach mal folgendes statt
$exist = dirgetsize($path)
If $exist = -1 then Return SetError(1, 1, '')
$exist = dirgetsize($path)
If $exist = -1 then
MsgBox(16, "Fehler", "Verzeichnis wurde nicht gefunden")
Exit
EndIF
Statt
[autoit]If Not FileExists($Path) Then Return SetError(1, 1, '')
If $sFilter = -1 Or $sFilter = Default Then $sFilter = "*.*"
Setz mal das hier ein
$exist = dirgetsize($path)
If $exist = -1 then Return SetError(1, 1, '')