Beiträge von ugt100
-
-
Guten morgen zusammen,
vor allen einen Dank für die Unterstützung.
Die Kuh ist vom Eis - mittels FileOpen + FileSetPos (Vorschlag von Alpines)
Der Grund ist die Tatsache, dass sich der gesuchte String immer am Ende des Files (letzten 13 Zeichen mit bekanntem Muster) zu suchen/finden ist.
Ein (für mich) zweiter Effekt ist das RegEx Pattern ("‚¬\|v(.+\..+)\..+', 3) - das kann ich als 'Schablone' für diverse Suchen einsetzen - Ein sehr willkommener Nebeneffekt !
Also allen nochmals vielen Dank für die kompetente, schnelle und verständliche Hilfe
Gruss
ugt100
-
Hallo zusammen,
danke für die schnellen Antworten.
zu den Rückfragen:
Zeichen Position: ja das sind immer die letzten 13 Zeichen des Files
Grössenordnung des jeweiligen Log Files: die Files sing zw. 4 und 7 GB gross
Art der Zeichen: es sind immer Zahlen (X, YY)
Das mit mit 'FileSetPos an die entsprechende Position springen' klingt gut - das schaue ich mir dann mal genauer an
Gruss
ugt100
-
Hallo zusammen,
irgendwie drehe ich mich immer wieder im Kreis und komme nicht weiter.
Folgendes 'Problem' habe ich:
Ich habe ein Log File das mehrmals am Tag geschrieben wird und immer unterschiedlich groß ist und auch unterschiedliche Inhalte hat.
Die letzten Zeichen des FIles liegen immer in der Form s.u. vor.
(Anmerkung: ‚¬|- diese Zeichenfolge kommt oft vor, sodass suchen nach dieser nicht das gewünschte Ergebnis bringt)
----> "‚¬|vX.YY.ZZZZ" <-----
Aus diesem 'String' benötige ich jetzt nur den Teil "X.YY".
Meine Frage ist es, was man wirklich Schlaues tun kann um das Ergebnis zu erhalten
z.B: Suche nach String ‚¬|v?(wildcard).?(wildcard)?(wildcard)
(natürlich kann ich das File einlesen und mich dann durchhangeln. Das ist aber ziemlich langsam - befürchte ich)
Danke schon mal im voraus
-
Hallo autoiter
auch dir Vielen Dank.
Lesen müsste man können - denn da stehts jaWie blöd von mir
Gruss
ugt100 -
Hallo Aplines,
DANKE für die schnelle Antwort/Lösung ...
Das ist natürlich gewitzt eine 'eigene' Suche durhs Array laufen zu lassen.Supi
Gruss
ugt100 -
Hallo zusammen,
ich komme mit meinem Problem einfach nicht weiter, darum wende ich mich an die Profis.Problem:
Ich hole mir von einem Wetterdienst (aus dem Web) Daten zum Wetter in 5 Städten, die ich in ein Array schreibe.
Soweit sogut.
Der Knackpunkt ist jetzt folgender:Das Array welches gefüllt wird hat leider nicht immer die gleiche Anzahl an Elementen (variiert zwischen 24 und 26 Elementen)
Zur Weiterverarbeitung brauche ich (z.B.) den Städtenamen der letztlich in einem dieser Element steht.
Leider ist aber Position nicht immer gleich (also z.B. nicht immer 24. Element)Nun dachte ich, da dieses Element hat immer gleich aufgebaut ist, nämlich ["name":"STADTNAME"], ich könnte über eine 'Teil String' Suche die Position ermitteln.
Also nach dem Motto suche im Array nach dem String, welcher mit "name"." beginnt und gib die Elementnummer zurückLeider klappt das so nicht ...
Was geht ist:
$sCitySearch = ' '"name":"koeln" '
$sCitySearchPos = _ArraySearch($aResult; sCitySearch)
(also der gesamte String)Das geht nicht:
$sCitySearch = ' '"name":
$sCitySearchPos = _ArraySearch($aResult; sCitySearch)
(also der Teil String bzw. die ersten 7 Zeichen des gesamten Strings)Ich habe das mit StringInStr versucht - kein Erfolg
Funktioniert das vielleicht mit StringRegExp ?Wahrscheinlich keijn grosses Ding - wenn man es weiss
Danke schon einmal im voraus
Gruss
ugt100 -
Nochmals ein Danke an alle hier im Thread und im Forum, dies sich 'meiner angenommen' haben ...
Thank you, Mille Gracie, Gracias ....
-
Hallo bazii,
Danke für Deine Antwort und den Tip.
Ich mache jetzt letzlich eine Mischng aus den Vorschlägen.Ich liste die für mich relavaten Verzeichnisse (LUN's) jetz mit einem CMD command (dir *. | FIND /I "<V"),schreibe das in Array,entferne die überflüssigen Informationen mittels StringHandling aus dem Array und nutze dann ein Autoit Script
(auf Basis dessen von Kanashius und meinem eigenen Anteil).Das klappt soweit und gut ist
Gruss
ugt100 -
Hi Aspirin Junkie
doch das funktioniert weil das letztlich eingehängte (also quasi per Link) Festplatten(stapel) sind.
Zu Fuss kannst Du Dir das LW z.b. M:\ mappen, wechselst dann in M:\123 und machst ein Dir auf der Command Line.
Dann bekommst Du so etwas:438 Datei(en), 146.520.160.353 Bytes
0 Verzeichnis(se), 36.318.412.800 Bytes freioder du schaust Dir das Ganze über den (Windows) Diskmanager an
-
Hallo Kanashius
danke für die schnelle Antwort. Leider zeigt Dein Script -zumindest bei mir - keinerlei Ergebnisse an.
Es läuft fehlerfrei durch und das wars.
Zur besseren Anschaulichkeit hier mal ein Beispiel:
Mit _FileListToArray("M:\", "*", 2, "True") ;List folders only hole ich mir die Verezicnisse die unter dem Stamm M:\ zu finden sind.Z.B.
M:\abc
M:\def
M:\ghi
M:\jkl
zu diesen (Unter)Verzeichnissen benötige ich jetzt den 'FreeSpace'Letztlich sollte die Anzeige des ErgebnisArrays wie folgt aussehen:
M:\abc 12,1 GB
M:\def 8,7 GB
M:\ghi 10,5 GB
M:\jkl 14,4 GBIch offe jtzt ist es verständlich - oder ?
-
Hallo Aspirin Juie,
nei n so ist das nicht wirklich.
Zur besseren Anschaulichkeit hier mal ein Beispiel:
Mit _FileListToArray("M:\", "*", 2, "True") ;List folders only hole ich mir die Verezicnisse die unter dem Stamm M:\ zu finden sind.Z.B.
M:\abc
M:\def
M:\ghi
M:\jkl
zu diesen (Unter)Verzeichnissen benötige ich jetzt den 'FreeSpace'Letztlich sollte die Anzeige des ErgebnisArrays wie folgt aussehen:
M:\abc 12,1 GB
M:\def 8,7 GB
M:\ghi 10,5 GB
M:\jkl 14,4 GBIch offe jtzt ist es verständlich - oder ?
gruss + danke
ugt100 -
Hallo Aspirin Junkie
sorry - Du hast natürlich recht .... Ich will den jeweiligen FREE Space ermitteln (habe ich im Text verdattelt :-()
-
Hallo zusammen,
habe gerade irgendwie eine (gedankliche) Blockade, hoffe aber hier geholfen zu bekommen.Ich will/muss auf diversen Servern die jeweiligen Größen der vorhandenen Directories ermitteln.
Die Serven haben sowohl physikalische LW als auch logische (LUN's).Nach Mappen des jeweilen Serverlaufwerkes (DriveMapAdd), erzeuge ich mittels _FileListToArray ein Array mit den vorhanden Directorys.
Soweit - so gutDer nächste Schritt - denke ich zumindest - ist ein
For $i = 1 To $aFileList[0]$iFreeSpace = DriveSpaceFree($aFileList[i])
$aDirSize = $iFreeSpace$iFreeSpace <----- und das soll jetzt auch noch der Dir Name ($aFileList[i]) mit ins Array geschrieben werden
Next
und jetzt hängt es bei mir. Folgendes sollte passieren:
Es soll wieder ein Array erzegut werden in dem zum einen der Dir Name (also $aFileList[i]) und zum zweiten die Grösse (also $iFreeSpace) geschrieben wird.
Zum Ende soll dann dieses Array (_ArrayDisplay()) angezeigt werden.
Hier mein Versuch soweit:
C
Alles anzeigen#include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> DriveMapAdd("M:", "\\XXXXXX\D$\123", $DMA_DEFAULT, "blablabla", "blub") ;Mapping networkdrives cdeDir() For $i = 1 To $aFileList[0] $iFreeSpace = DriveSpaceFree($aFileList[i]) ;compute dirsize $aDirSize = $iFreeSpace Next Func cdeDir() Local $aFileList = _FileListToArray("M:\", "*", 2, "True") ;List folders only If @error = 1 Then MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.") Exit EndIf If @error = 4 Then MsgBox($MB_SYSTEMMODAL, "", "No dir(s) were found.") Exit EndIf _ArrayDisplay($aFileList, "$aFileList") ;List all the folders EndFunc ;==>cdeDir
Danke schon einmal im voraus für die Tips/ HilfeGruss
ugt100 -
Guten morgen autoBert,
das ging jetzt aber fix. Hat es Dich nicht in Ruhe gelassen ?
Auf jedenfall vielen Dank für das sehr schnelle fixen (ich hätte das nicht gefunden glaube ich mal)Also nochmals DANKE
Gruss
ChrisP.S. Deine Ideen in Sachen ArrrayDisplay sind gut - und nice to have. Erinnert dann ja fast an eine Excel Tabelle.
Aber sicherlich muss man abschätzen wie Aufwand zu Ertrag steht ... -
Hallo AutoBert,
ich hatte gehofft, das Du meine Frage siehst und liest ...
Ja ich setzte die aktuelle 'stable Version' von AutoIt ein - also 3.3.14.2
Schön das es aus Deiner (Profi) Sicht möglich ist die Problematik zu fixen - die Terminlichkeit ist mir nicht so wichtig,
da ich ja letztlich mit _ArrayDisplay ein Ergebnis bekomme. Die 'schöne' Ansicht ist ja letztlich ein AdOn Bonbon - aber äussert angenehm, wenn vorhnden / funktionabel.Dann harre ich mal der Dinge die kommen und warte auf das 'solved' flag.
Danke
Gruss
ugt100 (chris) -
Guten Morgen,
nach langer Zeit wollte ich mich wieder einmal der 'gebauten' MyArrayDisplay von Autobert bedienen
(seinerzeit hatte ich diese beim einem grossen Migrationsprojekt beim Anzeigen von AD Infos genutzt).In dem jetzigen Anwendungsfall geht es um das rekursive Auslesen von Dateien inkl. der Dateigrößen.
Die Anzeige würde ich (wieder) mittels der MyArrayDisplay anpssen lassen. Leider klappt das nur noch bedingt, denn die Darstellung des Arrays
ist reduziert auf 2 schmale Spalten innerhalb der GUI - (Einen Screenshot habe ich als Datei attached)Mir ist es bis dato nicht gelungen diesen Effekt zu fixen :-(((
Vielleicht weiss ja einer der 'Profis' weiter
Danke schon einmal im voraus.
Gruss UGT100
Rekursives Suchen
Code
Alles anzeigen#include<Array.au3> #include<Date.au3> #include<File.au3> #include<MyArrayDisplay_new.au3> Global $cdeDir = FileSelectFolder("Startverzeichnis für den DirScan auswählen:","") SplashTextOn("Get Files and File Size", "Please wait - processing the requested filelist", 400, 50) $cdeDir1 = StringReplace($cdeDir, ":", "_") $cdeDir1 = StringReplace($cdeDir1, "\", "_") $ret = _GetFilesFolder_Rekursiv($cdeDir, '*',0,0) ;~ If IsArray($ret) Then ;~ _ArrayDisplay($ret, 'Rekursiv alle Dateien') ;~ Else ;~ ConsoleWrite($ret & @CRLF) ;~ EndIf Local $a2[Ubound($ret)][2] = [[$ret[0], '']] For $i = 1 To $ret[0] $a2[$i][0] = $ret[$i] ;~ $a2[$i][1] = (FileGetSize($ret[$i])) & " Bytes" $a2[$i][1] = (FileGetSize($ret[$i])) ;~ $a2[$i][1] = Round(FileGetSize($ret[$i])/1048576) & " MB" ;~ $iSize = FileGetSize($ret[$i]) ;~ If @error Then ConsoleWrite("Fehler bei Datei: " & $ret[$i] & @LF) ;~ $a2[$i][1] = Round($iSize) & " Bytes" Next $a = '' _FileWriteFromArray(@ScriptDir & "\cdeFileSize_" & @ComputerName & "_" & $cdeDir1 & ".txt", $a2, 1) _ArraySort($a2, 1, 0, 0, 1) SplashOff() ;~ _ArrayDisplay($a2) ;~ MyArrayDisplay_new($a2, "Path: " & $cdeDir & ": Filelist Filesize", "500|300") _MyArrayDisplay($a2, "Path: " & $cdeDir & ": Filelist Filesize", "500|300|500") ;================================================================================================== ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]]) ; Description: Rekursive Auflistung von Dateien und/oder Ordnern ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad) ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard) ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner ; optional: $iRetType 0 gibt Array, 1 gibt String zurück ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest ; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|' ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner ; Author(s): BugFix (bugfix@autoit.de) ;================================================================================================== Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0') Global $oFSO = ObjCreate('Scripting.FileSystemObject') Global $strFiles = '' Switch $sDelim Case '1' $sDelim = @CR Case '2' $sDelim = @LF Case '3' $sDelim = ';' Case '4' $sDelim = '|' Case Else $sDelim = @CRLF EndSwitch If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0 If $sExt = -1 Then $sExt = '*' If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1 _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim) If $iRetType = 0 Then Local $aOut $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1) If $aOut[1] = '' Then ReDim $aOut[1] $aOut[0] = 0 EndIf Return $aOut Else Return StringTrimRight($strFiles, StringLen($sDelim)) EndIf EndFunc Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF) If Not IsDeclared("strFiles") Then Global $strFiles = '' If ($Dir = -1) Or ($Dir = 0) Then For $file In $Folder.Files If $Ext <> '*' Then If StringRight($file.Name, StringLen($Ext)) = $Ext Then _ $strFiles &= $file.Path & $Delim Else $strFiles &= $file.Path & $Delim EndIf Next EndIf For $Subfolder In $Folder.SubFolders If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim) Next EndFunc
und hier die eigentliche FuncC
Alles anzeigen#include-once #include <array.au3> #include <GuiListview.au3> Func _MyArrayDisplay(Const ByRef $avArray, $sTitle = "Array: ListView Display", $sCols = 0, $iItemLimit = -1, $iTranspose = 0, $sSeparator = "", $sReplace = "|", $sHeader = "") If Not IsArray($avArray) Then Return SetError(1, 0, 0) $aCols = StringSplit($sCols, "|") ; Dimension checking Local $iDimension = UBound($avArray, 0), $iUBound = UBound($avArray, 1) - 1, $iSubMax = UBound($avArray, 2) - 1 If $iDimension > 2 Then Return SetError(2, 0, 0) ; Separator handling ;~ If $sSeparator = "" Then $sSeparator = Chr(1) If $sSeparator = "" Then $sSeparator = Chr(124) ; Check the separator to make sure it's not used literally in the array If _ArraySearch($avArray, $sSeparator, 0, 0, 0, 1) <> -1 Then For $x = 1 To 255 If $x >= 32 And $x <= 127 Then ContinueLoop Local $sFind = _ArraySearch($avArray, Chr($x), 0, 0, 0, 1) If $sFind = -1 Then $sSeparator = Chr($x) ExitLoop EndIf Next EndIf ; Declare variables Local $vTmp, $iBuffer = 64 Local $iColLimit = 250 Local $iOnEventMode = Opt("GUIOnEventMode", 0), $sDataSeparatorChar = Opt("GUIDataSeparatorChar", $sSeparator) ; Swap dimensions if transposing If $iSubMax < 0 Then $iSubMax = 0 If $iTranspose Then $vTmp = $iUBound $iUBound = $iSubMax $iSubMax = $vTmp EndIf ; Set limits for dimensions If $iSubMax > $iColLimit Then $iSubMax = $iColLimit If $iItemLimit < 1 Then $iItemLimit = $iUBound If $iUBound > $iItemLimit Then $iUBound = $iItemLimit ; Set header up If $sHeader = "" Then $sHeader = "Row " ; blanks added to adjust column size for big number of rows For $i = 0 To $iSubMax $sHeader &= $sSeparator & "Col " & $i Next EndIf ; Convert array into text for listview Local $avArrayText[$iUBound + 1] For $i = 0 To $iUBound $avArrayText[$i] = "[" & $i & "]" For $j = 0 To $iSubMax ; Get current item If $iDimension = 1 Then If $iTranspose Then $vTmp = $avArray[$j] Else $vTmp = $avArray[$i] EndIf Else If $iTranspose Then $vTmp = $avArray[$j][$i] Else $vTmp = $avArray[$i][$j] EndIf EndIf ; Add to text array $vTmp = StringReplace($vTmp, $sSeparator, $sReplace, 0, 1) $avArrayText[$i] &= $sSeparator & $vTmp ; Set max buffer size $vTmp = StringLen($vTmp) If $vTmp > $iBuffer Then $iBuffer = $vTmp Next Next $iBuffer += 1 ; GUI Constants Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 0x66 Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 0x40 Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 0x0200 Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 0x2 Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 0x4 Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3 Local Const $_ARRAYCONSTANT_LVIF_PARAM = 0x4 Local Const $_ARRAYCONSTANT_LVIF_TEXT = 0x1 Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (0x1000 + 29) Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (0x1000 + 4) Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (0x1000 + 44) Local Const $_ARRAYCONSTANT_LVM_INSERTITEMW = (0x1000 + 77) Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (0x1000 + 54) Local Const $_ARRAYCONSTANT_LVM_SETITEMW = (0x1000 + 76) Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 0x20 Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 0x1 Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 0x8 Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 0x0200 Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 0x00010000 Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 0x00020000 Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 0x00040000 Local Const $_ARRAYCONSTANT_tagLVITEM = "int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns" Local $iAddMask = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM) Local $tBuffer = DllStructCreate("wchar Text[" & $iBuffer & "]"), $pBuffer = DllStructGetPtr($tBuffer) Local $tItem = DllStructCreate($_ARRAYCONSTANT_tagLVITEM), $pItem = DllStructGetPtr($tItem) DllStructSetData($tItem, "Param", 0) DllStructSetData($tItem, "Text", $pBuffer) DllStructSetData($tItem, "TextMax", $iBuffer) ; Set interface up Local $iWidth = 64, $iHeight = 480 Local $hGUI = GUICreate($sTitle, $iWidth, $iHeight, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX)) Local $aiGUISize = WinGetClientSize($hGUI) Local $hListView = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[0], $aiGUISize[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS) Local $hCopy = GUICtrlCreateButton("Copy Selected", 3, $aiGUISize[1] - 23, $aiGUISize[0] - 6, 20) GUICtrlSetResizing($hListView, $_ARRAYCONSTANT_GUI_DOCKBORDERS) GUICtrlSetResizing($hCopy, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE) ; Fill listview Local $aItem For $i = 0 To $iUBound If GUICtrlCreateListViewItem($avArrayText[$i], $hListView) = 0 Then ; use GUICtrlSendMsg() to overcome AutoIt limitation $aItem = StringSplit($avArrayText[$i], $sSeparator) DllStructSetData($tBuffer, "Text", $aItem[1]) ; Add listview item DllStructSetData($tItem, "Item", $i) DllStructSetData($tItem, "SubItem", 0) DllStructSetData($tItem, "Mask", $iAddMask) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $pItem) ; Set listview subitem text DllStructSetData($tItem, "Mask", $_ARRAYCONSTANT_LVIF_TEXT) For $j = 2 To $aItem[0] DllStructSetData($tBuffer, "Text", $aItem[$j]) DllStructSetData($tItem, "SubItem", $j - 1) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETITEMW, 0, $pItem) Next EndIf Next ;************************************************************************************ $iWidth = _GUICtrlListView_GetColumnWidth($hListView,0) $iColCount = _GUICtrlListView_GetColumnCount($hListView) ;ConsoleWrite($aCols) For $i = 1 To $iColCount - 1 If IsArray($aCols) Then _GUICtrlListView_SetColumnWidth($hListView, $i, Number($aCols[$i])) ;ConsoleWrite($i & ": " & $aCols[$i]) If $aCols[$i] = -1 Then ;ConsoleWrite(" AutoSize") _GUICtrlListView_SetColumnWidth($hListView, $i, $LVSCW_AUTOSIZE) EndIf EndIf $iWidth += _GUICtrlListView_GetColumnWidth($hListView,$i) ConsoleWrite(@CRLF) Next ;************************************************************************************ #cs ; adjust window width $iWidth = 0 For $i = 0 To $iSubMax + 1 $iWidth += GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $i, 0) Next #ce If $iWidth < 250 Then $iWidth = 230 $iWidth += 20 If $iWidth > @DesktopWidth Then $iWidth = @DesktopWidth - 100 WinMove($hGUI, "", (@DesktopWidth - $iWidth) / 2, Default, $iWidth) ; Show dialog GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE ExitLoop Case $hCopy Local $sClip = "" ; Get selected indices [ _GUICtrlListView_GetSelectedIndices($hListView, True) ] Local $aiCurItems[1] = [0] For $i = 0 To GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0) If GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $i, 0x2) Then $aiCurItems[0] += 1 ReDim $aiCurItems[$aiCurItems[0] + 1] $aiCurItems[$aiCurItems[0]] = $i EndIf Next ; Generate clipboard text If Not $aiCurItems[0] Then For $sItem In $avArrayText $sClip &= $sItem & @CRLF Next Else For $i = 1 To UBound($aiCurItems) - 1 $sClip &= $avArrayText[$aiCurItems[$i]] & @CRLF Next EndIf ClipPut($sClip) EndSwitch WEnd GUIDelete($hGUI) Opt("GUIOnEventMode", $iOnEventMode) Opt("GUIDataSeparatorChar", $sDataSeparatorChar) Return 1 EndFunc ;==>_MyArrayDisplay
-
Guten Morgen,
wie versprochen hier meine weiteren Aktionen, um die Kuh doch noch vom Eis zu bekommen.
Also mittels Windows TaskScheduler, habe ich es nicht hinbekommen (werde aber das Problem einem mir bekannten Windowsmenschen zum Testen geben)
Meine Lösung ist jetzt mittels eines anderen Scheduler gelöst.
Mit dem (portablen) FBTaskScheduler, der im Hintergrund läuft, funktioniert das Script (32Bit und 64it).Damit kann ich erst mal leben
Gruss
ugt100 -
Guten Abend zusammen.
also ich habe jetzt den Test sowohl mit einer 32Bit und einer 64bit kompilierten Version getestet.
Das Ergebnis ist letztlich eindeutig - denn1 - beide exe Dateien sind ohne TaskScheduler ohne Fehler lauffähig - die funzen also
2 - sobald der TaskScheduler ins Spiel kommt geht das nicht mehr - zumindest nicht beim Aufruf der jeweiligen exe.
3 - Workaround - Aufruf der exe Datei mittels Batch File funktioniert leider auch nur ohne den TaskScheduler....
Start.Bat
....
@Echo off
Call "d:\....\PB_bkpNew32bit.exe"
Exitsoweit der Zwischenstand der Dinge.
Ich teste weiter und berichte über die Schritte
Danke nochmal für die schnelle erste Hilfe
mfg
ugt100 -
Hi Waters
OK das teste ich ....
(aber I'm a little bit confused, weil das AutoIT Script ja ohne Schwierigkeiten funktioniert)
Aber wenn das Nutzen der Funktion,des Rätsels Lösung ist, dann gerne.
Melde mich - so hoffe ich - im Laufe des morgigen Tages
Danke
GrussChris