Hmm, seltsam !
Ich hänge Dir die Datei mal an diesen Beitrag, damit Du sie direkt im Original hast !
Gruß Musashi
Hmm, seltsam !
Ich hänge Dir die Datei mal an diesen Beitrag, damit Du sie direkt im Original hast !
Gruß Musashi
Noch seltsamer: auch diese Datei zeigt nichts grünes an
Nimm mal diese Version - die schreibt in die Konsole Meldungen 'rein.
Dazu das Skript im SciTE-Editor mit F5 starten.
Nur zur Sicherheit :
Aus der Hilfe zur Funktion GUICtrlSetColor
Bemerkungen :
Checkbox, Radio, Group oder Progress-Controls können nicht gefärbt werden, wenn der "Windows XP style" verwendet wird.
Hast Du zufällig einen solchen style aktiviert ?
Gruß Musashi
Hast Du zufällig einen solchen style aktiviert ?
Falls ja, kannst du ihn für ein Control z.B. so deaktivieren:
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
Falls ja, kannst du ihn für ein Control z.B. so deaktivieren:
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
Das müsste dann direkt hinter jedem zu ändernden Control (hier also den 3 Radiobuttons) gesetzt werden, korrekt ?
Ich meine, es gibt auch einen DllCall, der das skriptweit macht, bin momentan aber nicht sicher :
DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
Das Flag 0 schaltet auf den klassischen Windowsstyle um.
Das Flag 7 schaltet, meines Wissens, zurück auf den Standard-Windowsstyle.
Gruß Musashi
1. in der Konsole wird angezeigt .... auf grün gesetzt
2. XP Style? sagt mir gar nichts. Wie schalte ich den ab?
Edit: Hab das hinter die radios gesetzt: Jetzt läuft´s !
Das müsste dann direkt hinter jedem zu ändernden Control (hier also den 3 Radiobuttons) gesetzt werden, korrekt ?
Nein, das kannst du jederzeit aktivieren oder auch wieder deaktivieren... musst dann eben nur das Handle des Controls angeben.
Ich meine, es gibt auch einen DllCall, der das skriptweit macht
Ja, gibt es... doch meistens will man das ja nur für einige Controls und nicht für die komplette Anwendung.
DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'dword', $iFlags) ; _WinAPI_SetThemeAppProperties ( $iFlags )
1. in der Konsole wird angezeigt .... auf grün gesetzt
OK, dann funktioniert es, wird aufgrund des styles nur nicht angezeigt.
Versuche mal die neue Version aus dem Anhang !
Bitnugger : Ok, danke für die Info
Gruß Musashi
Edit: Hab das hinter die radios gesetzt: Jetzt läuft´s !
OK - also wie vermutet der Style !
Mir ist noch etwas anderes aufgefallen, was Du ggf. einfügen solltest :
Wenn man das Programm startet, werden die Editfelder ja mit dem Jahr (also 19) vorbesetzt und der Cursor steht im Feld $idEditProjektDown. Die 19 ist aber bereits markiert, d.h. man muss vor einer Eingabe mit der Maus in das Feld klicken (oder auf einen Radiobutton) - ansonsten wird der markierte Teil gelöscht ! Das ist störend und auch fehleranfällig.
Um diese Markierung aufzuheben kann hinter :
GUICtrlSetData($idEditProjektDown, StringRight(@YEAR, 2))
GUICtrlSetFont($idEditProjektDown, 18, 400, 0, "MS Sans Serif")
folgende Zeile hinzugefügt werden :
GUICtrlSetState($idEditProjektDown, $GUI_FOCUS)
Gruß Musashi
Hallo,
die letzten 2 Tage haben nun auch meine Kollegen das Tool getestet.
Ein Kollege nutzte wie ich ein Tool das hier im Sommer 2017 entstanden ist.
Er hat nun den Vorschlag gemacht, diese 2 Tools miteinander zu verbinden.
Erstmal Bilder:
das Tool, das in diesem Thread entstand:
Tool aus dem anderen Thread: siehe unten
Also:
- Zeile mit dem Aussendienstordner entfernen.
- Abfrage des Ordners (Inhalt Rechner 1, wenn Radio auf Rechner 1 steht usw..)
- Funktionalität der Kopierbefehle aus dem alten Script sicherstellen.
Hier der Code, erstellt von Zeitriss
Opt("GUIOnEventMode", 1)
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
Global $g_sPath_Ini = @scriptdir & "\Settings.ini"
Global $g_sPath_Source = IniRead($g_sPath_Ini, "Path", "Source", "E:\Daten")
Global $g_sPath_Dest = IniRead($g_sPath_Ini, "Path", "Dest", "F:\Dokumente\Aussendienst")
Global $g_aLV_Folder[0][2]
Global $g_hGUI = GUICreate("Projekt Kopieren", 500, 500, -1, -1, $WS_SIZEBOX)
Opt("GUIResizeMode", BitOR($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlCreateLabel("Quellordner:", 0, 40, 70, 19, $SS_RIGHT)
Global $g_idInput_Path_Source = GUICtrlCreateInput($g_sPath_Source, 80, 20, 350, 20)
GUICtrlSetResizing($g_idInput_Path_Source, BitOR($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKHEIGHT, $GUI_DOCKRIGHT))
GUICtrlSetState($g_idInput_Path_Source, $GUI_DISABLE)
Global $g_idButton_Path_Source = GUICtrlCreateButton("...", 435, 20, 30, 20)
GUICtrlSetResizing($g_idButton_Path_Source, BitOR($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlCreateLabel("Zielordner:", 0, 53, 70, 19, $SS_RIGHT)
Global $g_idInput_Path_Dest = GUICtrlCreateInput($g_sPath_Dest, 80, 50, 350, 20)
GUICtrlSetResizing($g_idInput_Path_Dest, BitOR($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKHEIGHT, $GUI_DOCKRIGHT))
GUICtrlSetState($g_idInput_Path_Dest, $GUI_DISABLE)
Global $g_idButton_Path_Dest = GUICtrlCreateButton("...", 435, 50, 30, 20)
GUICtrlSetResizing($g_idButton_Path_Dest, BitOR($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
Opt("GUIResizeMode", $GUI_DOCKBORDERS)
Global $g_idLV_SelectFolder = GUICtrlCreateListView("Projekt", 5, 100, 490, 340, $LVS_LIST, $LVS_EX_CHECKBOXES)
Opt("GUIResizeMode", BitOR($GUI_DOCKRIGHT, $GUI_DOCKBOTTOM, $GUI_DOCKSIZE))
Global $g_idButton_ResetColor = GUICtrlCreateButton("Färbung entf.", 10, 450, 90, 22)
Global $g_idButton_SelectInv = GUICtrlCreateButton("Auswahl umkehren", 110, 450, 110, 22)
Global $g_idButton_Save = GUICtrlCreateButton("Pfade Speichern", 230, 450, 150, 22)
GUICtrlSetState($g_idButton_Save, $GUI_DISABLE)
Global $g_idButton_Start = GUICtrlCreateButton("Kopieren", 390, 450, 100, 22)
GUICtrlSetOnEvent($g_idButton_Path_Source, "Event_Button_Source")
GUICtrlSetOnEvent($g_idButton_Path_Dest, "Event_Button_Dest")
GUICtrlSetOnEvent($g_idButton_ResetColor, "Event_Button_ResetColor")
GUICtrlSetOnEvent($g_idButton_SelectInv, "Event_Button_SelectInv")
GUICtrlSetOnEvent($g_idButton_Save, "Event_Button_Save")
GUICtrlSetOnEvent($g_idButton_Start, "Event_Button_Start")
GUISetOnEvent($GUI_EVENT_CLOSE, "Event_Close")
LoadFolderInListView($g_sPath_Source)
GUISetState(1,$g_hGUI)
CheckFolder()
While 1
sleep(1000)
WEnd
Func CopyProject($aFolder, $sPathSource, $sPathTarget); Übernimmt die eigentliche Kopierarbeit
Local $sFolderSource, $sFolderTarget, $sFilesFail = ""
For $i = 0 to UBound($aFolder) -1
GUICtrlSetColor($aFolder[$i][1], 0x0000FF)
$sFolderSource = $sPathSource & "\" & $aFolder[$i][0] & "\Dokument-Explorer\Berechnungen"
$sFolderTarget = $sPathTarget & "\" & StringLeft($aFolder[$i][0], 4) & "\" & StringTrimLeft($aFolder[$i][0], 2) & "\Berechnungen"
ConsoleWrite($sFolderSource & " --> COPY --> " & $sFolderTarget & @crlf)
DirCreate($sFolderTarget)
If DirCopy($sFolderSource, $sFolderTarget, $FC_OVERWRITE) Then
GUICtrlSetColor($aFolder[$i][1], 0x00FF00)
GUICtrlSetState($aFolder[$i][1], $GUI_UNCHECKED)
Else
$sFilesFail &= $sFolderSource & @crlf & @crlf
GUICtrlSetColor($aFolder[$i][1], 0xFF0000)
EndIf
Next
If $sFilesFail <> "" Then MsgBox(16, "Fehler", "Folge Dateien konnten nicht kopiert werden: " & @crlf & @crlf & $sFilesFail)
EndFunc
Func CheckFolder(); Überprüft ob die Ordner ereichbar sind
Local $bReady = True
If Not FileExists($g_sPath_Source) Then
$bReady = False
MsgBox(16,"Fehler", "Quell-Ordner konnte nicht gefunden werden!")
EndIf
If Not FileExists($g_sPath_Dest) Then
$bReady = False
MsgBox(16,"Fehler", "Ziel-Ordner konnte nicht gefunden werden!")
EndIf
Return $bReady
EndFunc
Func Event_Button_Dest(); Auswählen des Zielordners über den Benützer
Local $sNewPath = FileSelectFolder("Bitte den Projekt-Ordner wählen", $g_sPath_Dest)
If @error Then Return
$g_sPath_Dest = $sNewPath
GUICtrlSetData($g_idInput_Path_Dest, $sNewPath)
GUICtrlSetState($g_idButton_Save, $GUI_ENABLE)
EndFunc
Func Event_Button_ResetColor(); Setzt die Einfärbug zurück
GUICtrlSetState($g_idLV_SelectFolder, $GUI_HIDE)
For $i = 0 to UBound($g_aLV_Folder) -1
GUICtrlSetColor($g_aLV_Folder[$i][1], 0x000000)
Next
GUICtrlSetState($g_idLV_SelectFolder, $GUI_SHOW)
EndFunc
Func Event_Button_Save(); Speichert die Pfade in einer Inidatei
Local $iWrite = 0
$iWrite += IniWrite($g_sPath_Ini, "Path", "Source", $g_sPath_Source)
$iWrite += IniWrite($g_sPath_Ini, "Path", "Dest", $g_sPath_Dest)
If $iWrite < 2 Then
MsgBox(16, "Error", "Speichern in Ini-Datei nicht möglich!")
Return
EndIf
GUICtrlSetState($g_idButton_Save, $GUI_DISABLE)
EndFunc
Func Event_Button_SelectInv(); Invertiert die Auswahl des ListView
Local $iState
GUICtrlSetState($g_idLV_SelectFolder, $GUI_HIDE)
For $i = 0 to UBound($g_aLV_Folder) -1
$iState = GUICtrlRead($g_aLV_Folder[$i][1], 1)
If BitAND($iState, $GUI_CHECKED) Then
GUICtrlSetState($g_aLV_Folder[$i][1], $GUI_UNCHECKED)
Else
GUICtrlSetState($g_aLV_Folder[$i][1], $GUI_CHECKED)
EndIf
Next
GUICtrlSetState($g_idLV_SelectFolder, $GUI_SHOW)
EndFunc
Func Event_Button_Start(); Listet die ausgewählten Projekte auf und ruft CopyProject() auf
If Not CheckFolder() Then Return
GUICtrlSetState($g_idButton_Start, $GUI_DISABLE)
GUICtrlSetData($g_idButton_Start, "Arbeitet")
Local $aFolderList[UBound($g_aLV_Folder)][2]
Local $iCounter = 0
For $i = 0 to UBound($g_aLV_Folder) -1
If BitAND(GUICtrlRead($g_aLV_Folder[$i][1], 1), $GUI_CHECKED) Then
$aFolderList[$iCounter][0] = $g_aLV_Folder[$i][0]
$aFolderList[$iCounter][1] = $g_aLV_Folder[$i][1]
$iCounter += 1
EndIf
Next
ReDim $aFolderList[$iCounter][2]
CopyProject($aFolderList, $g_sPath_Source, $g_sPath_Dest)
GUICtrlSetState($g_idButton_Start, $GUI_ENABLE)
GUICtrlSetData($g_idButton_Start, "Kopieren")
EndFunc
Func Event_Button_Source(); Auswählen des Quellordners über den Benützer
Local $sNewPath = FileSelectFolder("Bitte den Projekt-Ordner wählen", $g_sPath_Source)
If @error Then Return
$g_sPath_Source = $sNewPath
GUICtrlSetData($g_idInput_Path_Source, $sNewPath)
LoadFolderInListView($g_sPath_Source)
GUICtrlSetState($g_idButton_Save, $GUI_ENABLE)
EndFunc
Func Event_Close()
Exit
EndFunc
Func LoadFolderInListView($sPath); Listet die Projekte aus dem Quellordner auf, wenn sie dem Schema entsprechenden.
For $i = 0 to UBound($g_aLV_Folder) -1
$g_aLV_Folder[$i][0] = ""
GUICtrlDelete($g_aLV_Folder[$i][1])
Next
Local $aFolder = _FileListToArray($sPath, "*", $FLTA_FOLDERS, False)
If Not IsArray($aFolder) Then
ReDim $g_aLV_Folder[0][2]
Return
EndIf
Local $iCounter = 0
ReDim $g_aLV_Folder[ $aFolder[0] ][2]
For $i = 1 to $aFolder[0]
If StringRegExp($aFolder[$i], "\d\d\d\d....") Then
$g_aLV_Folder[$iCounter][0] = $aFolder[$i]
$g_aLV_Folder[$iCounter][1] = GUICtrlCreateListViewItem($aFolder[$i], $g_idLV_SelectFolder)
$iCounter += 1
EndIf
Next
ReDim $g_aLV_Folder[ $iCounter ][2]
EndFunc
Alles anzeigen
Kann jemand diese beiden Scripts zusammenfügen?
Aus Beitrag #1
Ich hatte vor1 1/2 Jahren schon einmal eine ähnliche Anfrage gestellt. Nun haben sich die Voraussetzungen etwas geändert.
Aus Beitrag #91 :
Alles anzeigenEin Kollege nutzte wie ich ein Tool das hier im Sommer 2017 entstanden ist.
Er hat nun den Vorschlag gemacht, diese 2 Tools miteinander zu verbinden.
...
Hier der Code, erstellt von Zeitriss
...
Kann jemand diese beiden Scripts zusammenfügen?
Es hätte vieles einfacher gemacht, wenn Du den bereits bestehenden Code von Zeitriss im Beitrag #1 deutlicher erwähnt hättest .
Mal sehen, ob ich dazu komme - aber nicht die nächsten Tage (da habe ich selbst genug zu tun).
Ggf. kann Dir Zeitriss das auch schneller einbauen.
Gruß Musashi
ZitatEs hätte vieles einfacher gemacht, wenn Du den bereits bestehenden Code von Zeitriss im Beitrag #1 deutlicher erwähnt hättest .
Naja, die Tools unterscheiden sich ja schon recht deutlich.
Die Entwicklung beruht ja in erster Linie auf meinen Vorgaben. Über eine Vermischung hatte ich überhaupt nicht nachgedacht - erst der Kollege hat mich darauf gebracht.
und ausserdem habe ich in den vergangenen Wochen ja auch ein bischen gelernt
Danke auf jeden Fall für deine Mühen.
... und außerdem habe ich in den vergangenen Wochen ja auch ein bisschen gelernt
Das war im Grunde ja auch der Sinn der ganzen Übung .
Die beiden Skripte zu verheiraten wäre m.M.n. aufwendiger, als ein Neues zu erstellen. Ich hatte vor kurzem ein vergleichbares Tool für einen anderen User gebaut, siehe :
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=MyAutoIt3_Yellow.ico
#AutoIt3Wrapper_UseUpx = N
#AutoIt3Wrapper_Res_SaveSource = N
#AutoIt3Wrapper_Res_Description = FileMove-Tool
#AutoIt3Wrapper_Res_Fileversion = 1.0.0.4
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; ===============================================================================================
; Programm zum Verschieben (FileMove) von cr2-Dateien aus einem Quellordner in einen Zielordner
; erstellt von @Musashi am 04.12.2018
; ===============================================================================================
; Ablauf :
; - Es wird im Zielordner 'C:\Test\PROJEKT AUSWAHL' nach *.jpg-Dateien gesucht
; - Dann wird im Quellorder 'C:\Test\PROJEKT' nach gleichnamigen *.cr2-Dateien gesucht
; - Diese *.cr2-Dateien werden von 'C:\Test\PROJEKT' nach 'C:\Test\PROJEKT AUSWAHL' verschoben
; Ob bestehende *.cr2-Dateien überschrieben sollen, ist per Checkbox auswählbar.
;
; Die Pfade von Quell- und Zielordner können in der Filemove.ini-Datei angepasst werden.
; Alternative : Suchen-Buttons oder direkt eingeben
; ===============================================================================================================================
#include <File.au3>
#include <Array.au3>
#include <Misc.au3>
#include <Date.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
Opt('MustDeclareVars', 1)
Global $sSourceDir ; Quellordner
Global $sDestDir ; Zielordner
Global $aFileListJPGDest ; Dateiliste der *.jpg-Dateien im Zielordner
; Einlesen der Verzeichnisse aus "Filemove.ini" :
$sSourceDir = IniRead("Filemove.ini", "Directories", "SourceDir", "") ; z.B. "C:\Test\PROJEKT"
$sDestDir = IniRead("Filemove.ini", "Directories", "DestDir", "") ; z.B. "C:\Test\PROJEKT AUSWAHL"
; Skalierungsfaktor für ausgewählte GUI-Elemente :
; Hinweis : Dieser Teil dient nur zur Optimierung der Anzeige
Global $iDPIMetricsApplied ; Wert aus Registry (dezimal)
Global $fDPI_SF ; Skalierungsfaktor (scale factor)
$iDPIMetricsApplied = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "AppliedDPI")
If @error Then
$iDPIMetricsApplied = 120 ; (125%)
EndIf
If ($iDPIMetricsApplied >= 96) And ($iDPIMetricsApplied <= 144) Then
If $iDPIMetricsApplied = 120 Then
$fDPI_SF = 1
Else
$fDPI_SF = Round(120 / $iDPIMetricsApplied, 2)
EndIf
Else
$fDPI_SF = 1
EndIf
; GUI aufrufen :
_MainGUI()
; -------------------------------------------------------------------------------------------------------------------------------
; Funktion : _MainGUI
; -------------------------------------------------------------------------------------------------------------------------------
Func _MainGUI()
Local $iGuiMsg, $hGUI
Local $idSourceDir, $idDestDir
Local $idBtnBrowseSourceDir, $idBtnBrowseDestDir
Local $idEditFilelist, $idCBoxFOverwrite
Local $idBtnMove, $idBtnFinish
Local $sString = "", $iCR2Found = 0, $iCR2Moved = 0, $iCr2OverwriteFlag = 1
Local $hTimer, $fTimerDiff, $iTimerHours = 0, $iTimerMins = 0, $iTimerSecs = 0, $iTimerMilliSecs = 0
$hGUI = GUICreate(" Verschieben von *.cr2-Dateien", 1280, 800)
GUISetFont(11 * $fDPI_SF, $FW_NORMAL, 1, "Arial") ; Standardfont setzen
GUICtrlCreateLabel("Projektordner", 20, 10, 140, 30)
$idSourceDir = GUICtrlCreateInput("", 160, 10, 850, 30)
GUICtrlSetData($idSourceDir, $sSourceDir)
$sSourceDir = GUICtrlRead($idSourceDir)
$idBtnBrowseSourceDir = GUICtrlCreateButton("Suchen", 1020, 10, 150, 30)
GUICtrlCreateLabel("Auswahlordner", 20, 45, 140, 30)
$idDestDir = GUICtrlCreateInput("", 160, 45, 850, 30)
GUICtrlSetData($idDestDir, $sDestDir)
$sDestDir = GUICtrlRead($idDestDir)
$idBtnBrowseDestDir = GUICtrlCreateButton("Suchen", 1020, 45, 150, 30)
$idEditFilelist = GUICtrlCreateEdit('', 20, 100, 1240, 550)
GUICtrlSetFont($idEditFilelist, 12 * $fDPI_SF, $FW_BOLD, 1, "Courier", $PROOF_QUALITY)
_GUICtrlEdit_SetLimitText($idEditFilelist, 64000)
$idCBoxFOverwrite = GUICtrlCreateCheckbox(" bestehende .cr2-Datei(en) überschreiben", 20, 700, 400, 30)
GUICtrlSetState(-1, $GUI_CHECKED)
$idBtnMove = GUICtrlCreateButton("Verschieben &starten", 20, 750, 200, 30)
$idBtnFinish = GUICtrlCreateButton("&Beenden", 250, 750, 150, 30, $BS_DEFPUSHBUTTON)
GUISetState(@SW_SHOW, $hGUI)
While 1
$iGuiMsg = GUIGetMsg()
Select
Case $iGuiMsg = $GUI_EVENT_CLOSE
ExitLoop
Case $iGuiMsg = $idBtnBrowseSourceDir
; Quellordner suchen :
$sString = FileSelectFolder("Wähle Quellordner", $sSourceDir)
If @error Then
ContinueLoop
Else
; Quellordner gefunden :
$sSourceDir = $sString
GUICtrlSetData($idSourceDir, $sSourceDir)
EndIf
Case $iGuiMsg = $idBtnBrowseDestDir
; Zielordner suchen :
$sString = FileSelectFolder("Wähle Zielordner", $sDestDir)
If @error Then
ContinueLoop
Else
; Zielordner gefunden :
$sDestDir = $sString
GUICtrlSetData($idDestDir, $sDestDir)
EndIf
Case $iGuiMsg = $idCBoxFOverwrite ; bestehende .cr2-Datei(en) überschreiben
If _IsChecked($idCBoxFOverwrite) Then
$iCr2OverwriteFlag = 1
Else
$iCr2OverwriteFlag = 0
EndIf
Case $iGuiMsg = $idBtnFinish
ExitLoop
Case $iGuiMsg = $idBtnMove ; Dateien verschieben :
$iCR2Found = 0
$iCR2Moved = 0
; 1. Prüfen, ob die Ordner existieren :
; -------------------------------------
$sString = GUICtrlRead($idSourceDir) ; Quellordner
If Not _DirectoryExists($sString) Then
MsgBox($MB_SYSTEMMODAL+$MB_ICONERROR, "Meldung : ", _
"Quellordner : " & $sString & " existiert nicht" & @CRLF & @CRLF)
GUICtrlSetData($idSourceDir, $sSourceDir)
ContinueLoop
EndIf
$sString = GUICtrlRead($idDestDir) ; Zielordner
If Not _DirectoryExists($sString) Then
MsgBox($MB_SYSTEMMODAL+$MB_ICONERROR, "Meldung : ", _
"Zielordner : " & $sString & " existiert nicht" & @CRLF & @CRLF)
GUICtrlSetData($idDestDir, $sDestDir)
ContinueLoop
EndIf
; 2. nach *.jpg-Dateien im Zielordner suchen und Array besetzen :
; ---------------------------------------------------------------
$aFileListJPGDest = _FileListToArray($sDestDir, "*.jpg", $FLTA_FILES, True)
If @error == 4 Then
MsgBox($MB_SYSTEMMODAL+$MB_ICONINFORMATION, "Meldung : ", _
"Zielordner : " & $sString & " enthält keine *.jpg Dateien" & @CRLF & @CRLF)
GUICtrlSetData($idDestDir, $sDestDir)
ContinueLoop
EndIf
; 3. nach passenden *.cr2-Dateien im Quellordner suchen und verschieben :
; ----------------------------------------------------------------------------
_GuiCtrlEdit_AppendText($idEditFilelist, @CRLF & "Folgende cr2.-Dateien werden nach " & $sDestDir & " verschoben : " & @CRLF)
_GuiCtrlEdit_AppendText($idEditFilelist, "------------------------------------------------------------------------------------" & @CRLF & @CRLF)
; Zeitmessung starten :
$hTimer = TimerInit()
For $i = 1 To $aFileListJPGDest[0]
$sString = StringTrimRight(StringTrimLeft($aFileListJPGDest[$i], StringInStr($aFileListJPGDest[$i], '\', 0, -1)), 4) & '.cr2'
If FileExists($sSourceDir & '\' & $sString) Then
; .cr2-Datei gefunden -> verschieben :
$iCR2Found += 1
If Not Mod($iCR2Found, 500) Then GUICtrlSetData($idEditFilelist, "")
If FileMove($sSourceDir & '\' & $sString, $sDestDir & '\' & $sString, $iCr2OverwriteFlag) Then
_GuiCtrlEdit_AppendText($idEditFilelist, $sSourceDir & '\' & $sString & ' -> verschoben nach ' & $sDestDir & @CRLF)
$iCR2Moved += 1
Else
_GuiCtrlEdit_AppendText($idEditFilelist, $sSourceDir & '\' & $sString & ' -> nicht verschoben' & @CRLF)
EndIf
EndIf
Next
_GuiCtrlEdit_AppendText($idEditFilelist, @CRLF & "Vorgang abgeschlossen ")
_GuiCtrlEdit_AppendText($idEditFilelist, @CRLF & "Es wurden " & $iCR2Found & " Dateien gefunden und " & $iCR2Moved & " verschoben" & @CRLF)
; Zeitdauer des Prozesses anzeigen :
$fTimerDiff = TimerDiff($hTimer)
$iTimerMilliSecs = Int(Mod($fTimerDiff, 1000))
_TicksToTime(Int($fTimerDiff), $iTimerHours, $iTimerMins, $iTimerSecs)
$sString = StringFormat("%02d:%02d:%02d.%03d (Std:Min:Sek.Millisek)", $iTimerHours, $iTimerMins, $iTimerSecs, $iTimerMilliSecs)
_GuiCtrlEdit_AppendText($idEditFilelist, "Zeitdauer = " & $sString & @CRLF)
EndSelect
WEnd
GUIDelete($hGUI)
EndFunc ;_MainGUI
; -------------------------------------------------------------------------------------------------------------------------------
; Funktion : _IsChecked
; -------------------------------------------------------------------------------------------------------------------------------
Func _IsChecked($idControlID)
Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_IsChecked
; -------------------------------------------------------------------------------------------------------------------------------
; Funktion : _DirectoryExists
; -------------------------------------------------------------------------------------------------------------------------------
Func _DirectoryExists($sDirPath )
Local $bReturnValue = False
If FileExists($sDirPath) AND StringInStr(FileGetAttrib($sDirPath), 'D') Then $bReturnValue = True
Return $bReturnValue
EndFunc ;==>_DirectoryExists
Alles anzeigen
Um das zu testen, kannst Du zwei Verzeichnisse anlegen :
Quellverzeichnis : C:\Test\PROJEKT
Zielverzeichnis : C:\Test\PROJEKT AUSWAHL
Die Testdaten in beide Verzeichnisse kopieren !
Dort werden die Dateien zwar verschoben (nicht kopiert), aber das ist nur eine einzeilige Änderung.
Auch die festgelegten Dateitypen (.jpg .cr2) lassen sich schnell anpassen. Zudem wäre es sinnvoll, die schöne Kopierfunktion _FileCopyEx von Oscar einzubauen. Was noch fehlt ist die Auswahl der Rechner. Wie gesagt, mal sehen ob ich die nächsten Tage dazu komme.
Gruß Musashi
Wollte das Script ausprobieren:
"C:\Test\FileMoveV41.au3" (147) : ==> Subscript used on non-accessible variable.:
For $i = 1 To $aFileListJPGDest[0]
For $i = 1 To $aFileListJPGDest^ ERROR
Wollte das Script ausprobieren:
"C:\Test\FileMoveV41.au3" (147) : ==> Subscript used on non-accessible variable.:For $i = 1 To $aFileListJPGDest[0]
For $i = 1 To $aFileListJPGDest^ ERROR
Es wurden wohl keine Dateien gefunden und deswegen wird auch kein Array erstellt (@error müsste 4 sein). Prüfe mit UBound ob das Array überhaupt eine Größe hat.
Btw, das ist wieder ein klassisches Beispiel warum man nicht in [0] die Größe eines Arrays schreiben sollte.
Habe die Testumgebung mal auf eine andere Partition verschoben (also nicht c) - und da funktioniert das Script
Es wurden wohl keine Dateien gefunden
Stimmt, ich habe nur auf Existenz des Verzeichnisses geprüft. Da ich immer Testdaten im Zielordner hatte ist mir das Fehlen der Dateiprüfung nicht aufgefallen .
Hier die Version mit Prüfung und der FileMove.ini .
Btw, das ist wieder ein klassisches Beispiel warum man nicht in [0] die Größe eines Arrays schreiben sollte.
Das ist nicht meine Idee sondern liegt an der Funktion _FileListToArray :
Rückgabewert
Erfolg : Ein 1D Array. $aArray[0] = Anzahl von zurückgegebenen Dateien/Ordnern
Habe die Testumgebung mal auf eine andere Partition verschoben (also nicht c) - und da funktioniert das Script.
Bei mir taucht der Fehler der alten Version auch auf einer anderen Partition auf.
Gruß Musashi
ZitatDort werden die Dateien zwar verschoben (nicht kopiert), aber das ist nur eine einzeilige Änderung.
Auch die festgelegten Dateitypen (.jpg .cr2) lassen sich schnell anpassen. Zudem wäre es sinnvoll, die schöne Kopierfunktion _FileCopyEx von Oscar einzubauen. Was noch fehlt ist die Auswahl der Rechner. Wie gesagt, mal sehen ob ich die nächsten Tage dazu komme.
Gruß Musashi
Hallo Musashi,
bist du in der Zwischenzeit zu etwas gekommen?
Gruß Kayes
bist du in der Zwischenzeit zu etwas gekommen?
Klare Aussage : Nein !
Ich arbeite momentan an einem größeren und recht nervigen Prioritätsprojekt. Das beansprucht nicht nur meine Zeit, sondern auch meine gute Laune .
Was ist denn mit der letzten Variante des Skriptes, das wir hier zusammen entwickelt haben ?
Funktioniert die nicht, oder geht es vorrangig um ästhetische Aspekte des GUI-Designs ?
Gruß Musashi