mir ist unklar wir das rtf-Format Textdrehung verarbeitet, aber wie gesagt wenns klappt ist alles gut
manchmal sind die Wege unergründlich.
mir ist unklar wir das rtf-Format Textdrehung verarbeitet, aber wie gesagt wenns klappt ist alles gut
manchmal sind die Wege unergründlich.
weitere Vorschläge - Verbesserungen gerne, ansonsten:
-Thema erledigt-
ich denke nein.
Warum muss es denn das rtf / doc Format sein?
In pdf ist das sicher einfacher erstellt
Weil die weiterverarbeitende Software pdf nicht verarbeitet.
Hab es jetzt so gelöst:
Schritt 1: Erstellung der Beispieldatei in Word, abgespeichert im rtf Format.
Schritt 2: Editieren der rtf Datei im Editor und Speicherung in 2 Teil, einmal was vor dem Beispieltext ist und das was nach dem Beispieltext ist.
Schritt 3: Verkettung der 3 Teile.
Sieht im Code dann so aus:
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <WindowsConstants.au3>
; -------------------------------------------------------------------------------------------------------------------------------
; Funktion : _FILE
; Beschreibung : Erzeugung der Textdatei
; -------------------------------------------------------------------------------------------------------------------------------
;Func _FILE()
Local $File1 = "I:\Testumgebung\teil1.txt"
Local $File2 = "I:\Testumgebung\teil2.txt"
Local $hFileOpen = FileOpen("I:\Testumgebung\TEST.doc", $FO_APPEND)
local $Az ="Beispiel"
Local $Text1 = FileRead ($File1)
Local $Text2 = FileRead ($File2)
FileWrite($hFileOpen, $Text1)
FileWrite($hFileOpen, $Az)
FileWrite($hFileOpen, $Text2)
FileClose($hFileOpen)
;
;EndFunc ;==>_Ende
Alles anzeigen
Hallo zusammen!
ich habe folgendes Problem:
ich möchte eine rtf (oder doc) Datei mit autoit in einem bestimmten Format erstellen.
So sieht der Code bisher aus.
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <WindowsConstants.au3>
; -------------------------------------------------------------------------------------------------------------------------------
; Funktion : _FILE
; Beschreibung : Erzeugung der Textdatei
; -------------------------------------------------------------------------------------------------------------------------------
;Func _FILE()
Local $hFileOpen = FileOpen("I:\Testumgebung\TEST.rtf", $FO_APPEND)
FileWrite($hFileOpen, "Beispiel")
FileClose($hFileOpen)
;
;EndFunc ;==>_Ende
Alles anzeigen
Was muss ich tun, damit mir folgende Formatierung erzeugt wird:
Wenn ich mir in Word die rtf Datei erzeuge, kommt im Editor eine Riesendatei dabei raus. Kann ich das über eine Verkettung von Variablen lösen?
Moombas schaue ich mir gerade an
230124 ist kein Datum sondern Jahrgang 23 Auftragsnummer 0124
Alles anzeigenMoin Kayes.
Was möchtest Du denn erreichen?
Das alle PDF Dateien die mit ....\230124_FA_ vorhanden sind sich öffnen oder diese z. B. als Liste ausgegeben werden?
Oder möchtest Du diese Dateien weg kopieren bzw. verschieben?
Ich sehe nicht, was Du erreichen möchtest. Magst Du das BITTE etwas genauer darstellen? Vielen Dank.
Ich möchte, das die Datei sich im Acrobat Reader öffnet.
\Dokumente\2023\230124_FA_Janssen.pdf
Der Teil ....\230124_FA_ ist nur einmal vorhanden und immer gleich aufgebaut. Über eine Variable kann ich den Jahrgang und ersten Teil des Pfades zusammenbauen. Aber den Namen (in diesem Fall Janssen) weiß ich nicht genau und soll durch die Wildcard ersetzt werden.
Hier die Funktion, in $idProjekt steckt 230124:
Func _OPENFA()
Global $jjjj = "20" & StringLeft(GUICtrlRead($idProjekt), 2)
Global $projekt = GUICtrlRead($idProjekt)
$sImageFileName = "H:\Dokumente\" & $jjjj & "\" & $projekt & "_FA_*"
ShellExecute($sImageFileName & ".pdf")
If @error Then Exit MsgBox(BitOR(4096, 16),"", "Fehler : Datei nicht gefunden" & @CRLF)
EndFunc
Hallo zusammen,
ich habe zu dem Thema Wildcards in ShellExecute nichts gefunden was zu meinem Problem passt, deswegen:
Ich möchte eine pdf öffnen die folgendermaßen benannt ist:
\Dokumente\Jahrgang\Auftragsnummer_Auftragsart_Name.pdf
\Dokumente\2023\230124_FA_Janssen.pdf
Kann ich bei ShellExecute nicht mit Wildcards arbeiten?
z.B. \Dokumente\2023\230124_FA_*.pdf
Alles anzeigenHi kayes !
Vorab, und sei mir bitte nicht böse ob dieses Kommentares :
Das Ganze geht schon wieder in die Richtung, die wir in dem 100+ Beiträge langen Thread kopiertool (vor gut 2 Jahren) bereits hatten.
Das Problem bestand u.a. , ähnlich wie hier, darin, dass Du Codeteile recht sportlich und ohne mal in die Hilfe zu schauen, zusammenkopierst.
Diverse Punkte hat misterspeed ja bereits benannt.
Desweiteren :
Um ein Skript nachvollziehbar zu machen, sind z.B. aussagekräftige Variablennamen überaus hilfreich.
$gem, $fl und $flst sind diesbzgl. kein guter Start.
Bevor wir jetzt also wieder an einem von Beginn an 'verfrickelten' Skript herumbasteln, sollten wir schrittweise eine saubere Basis aufbauen. Ich kann mich noch gut daran erinnern, dass Du Teillösungen anderer User gerne per Copy&Paste in Dein Skript einbaust, ohne den Gesamtzusammenhang im Auge zu behalten.
Böse bin ich nicht, obwohl der Hinweis, ich würde ja nicht in die Hilfe schauen meiner Meinung nach ein bischen unfair ist.
Auch die Strukturierung finde ich eigentlich in Ordnung.
Die Nutzung der Variablen gem (Gemarkung) fl (Flur) und rnr (Rissnummer) finde ich für mich sehr klar eigentlich. Für Aussenstehende vielleicht nicht so einfach.
Fokussiere ich mich zu sehr auf das Ergebnis anstatt den Weg von Anfang bis zum Ende jeden Millimeter zu gehen?
Wie bei den anderen Skripten auch, versuche ich mir die tägliche Arbeit zu erleichtern. Und für das, was ich hier jetzt geplant habe gibt es in unserer Bürosoftware keine Module.
Ich nutze AutoIt um mit möglichst wenig Aufwand zu einem praktikablen Ergebnis zu kommen. So interessant das Programmieren auch ist, findet es bei mir sehr wenig statt, da ist es schwierig, sich immer wieder in diese Dinge reinzudenken.
In der Vergangenheit hätte ich wohl des öfteren einmal etwas mehr Dankbarkeit an den Tag legen können.
OK, so funktioniert es.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <FileConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <GuiEdit.au3>
#include <WinAPIShPath.au3>
#include <GuiListView.au3>
#include <ListviewConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
;#AutoIt3Wrapper_icon=test.ico
#AutoIt3Wrapper_UseX64 = N
#AutoIt3Wrapper_UseUpx = N ; interne UPX Komprimierung ausschalten
#AutoIt3Wrapper_Res_SaveSource = N
#AutoIt3Wrapper_Res_Description = Archivierungstool
#AutoIt3Wrapper_Res_Fileversion = 1.0.0.5
#AutoIt3Wrapper_Res_LegalCopyright = 2021 by kayes
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;
; ==============================================================================
; Projekt : Datei und Archivierungstool
; bearbeitet am : 17.02.2021
; ==============================================================================
; Danksagungen :
; Erstellt unter Mithilfe aus dem autoit.de-Forum von :
; Musashi, misterspeed
; ==============================================================================
; Variablendeklaration
;
Global $gem
Global $fl
Global $rnr
Local $idEditProjekt
Global $sImageFile
;==============================================================================
; Beginn des Formulars:
;
$Form1_1 = GUICreate("Dateitool (c) 2021 Kayes", 620, 300, 197, 145)
;
; Beschriftung
;
$Label1 = GUICtrlCreateLabel("Dateien aus dem Archiv öffnen", 80, 26, 440, 60,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
;
; Beschriftung der drei Felder
;
$Label2 = GUICtrlCreateLabel("Gemarkung", 30, 120, 166, 30,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Flur", 226, 120, 166, 30,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Nummer", 422, 120, 166, 30,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
;
; Die drei Eingabefelder
;
Global $idgem = GUICtrlCreateEdit("", 30, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont(18, 400, 20, "MS Sans Serif")
Global $idfl = GUICtrlCreateEdit("", 226, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont(18, 400, 0, "MS Sans Serif")
Global $idrnr = GUICtrlCreateEdit("", 422, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont(18, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
;
; Startbutton Öffnen
;
$idBtnOpen = GUICtrlCreateButton("Öffnen", 250, 200, 110, 30)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $idBtnOpen
Dateioeffnen()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;
; Funktion Datei überprüfen und öffnen
;
Func Dateioeffnen()
$gem = GuiCtrlRead($idgem)
$fl = GuiCtrlRead($idfl)
$rnr = GuiCtrlRead($idrnr)
$sImageFile = "D:\TESTUMGEBUNG\Archiv\" & $gem & "\" & $fl & "\" & $gem & "_N_" & $fl &"_" & $rnr & ".TIF"
If FileExists($sImageFile) Then
ShellExecute($sImageFile)
If @error Then Exit MsgBox(BitOR(4096, 16), "Fehler : ", "ShellExecute fehlgeschlagen !" & @CRLF)
Else
MsgBox(BitOR(4096, 16), "Fehler : Datei nicht gefunden", $sImageFile & @CRLF)
EndIf
Alles anzeigen
2. Problem: Wie mache ich mich von der Dateiendung unabhängig.
Und mir war noch etwas weiteres aufgefallen:
bei der 2. und 3. Eingabe muss ich eine Null vorstellen bzw. mit Nullen auffüllen. Wie kann ich bei der Eingabe von 2 auf 00002 stellen?
3. Um den Inhalt eines Controls auszulesen verwendet man die Funktion guictrlread()
So richtig?
;
; Die drei Eingabefelder
;
Global $idgem = GUICtrlCreateEdit("", 30, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont($idEditProjekt,18, 400, 20, "MS Sans Serif")
$gem = GuiCtrlRead($idgem)
Global $idfl = GUICtrlCreateEdit("", 226, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont($idEditProjekt,18, 400, 0, "MS Sans Serif")
$fl = GuiCtrlRead($idfl)
Global $idrnr = GUICtrlCreateEdit("", 422, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont($idEditProjekt,18, 400, 0, "MS Sans Serif")
$rnr = GuiCtrlRead($idrnr)
GUISetState(@SW_SHOW)
Alles anzeigen
Hallo,
ich möchte über ein kleines Programm eine Datei öffnen.
Ich gebe dazu drei Variablen ein.
$gem : vierstellige Zahl
$fl : dreistellige Zahl
$flst: fünfstellige Zahl.
Die Dateien sind folgendermaßen formatiert:
3038_N_010_00002.TIF
gem = 3038
fl = 010
rnr = 00002
wenn ich diese Zahlen in meine Felder eingebe, wirft er mir für die Variable gem die 7 aus und für fl die 8.
Wie kommt das?
2. Frage,
die Datei liegt entweder als TIF oder als jpg vor. Was muss ich in den Pfad eintragen um das unabhängig von der Dateiendung zu machen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <FileConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <GuiEdit.au3>
#include <WinAPIShPath.au3>
#include <GuiListView.au3>
#include <ListviewConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
;#AutoIt3Wrapper_icon=test.ico
#AutoIt3Wrapper_UseX64 = N
#AutoIt3Wrapper_UseUpx = N ; interne UPX Komprimierung ausschalten
#AutoIt3Wrapper_Res_SaveSource = N
#AutoIt3Wrapper_Res_Description = Archivierungstool
#AutoIt3Wrapper_Res_Fileversion = 1.0.0.5
#AutoIt3Wrapper_Res_LegalCopyright = 2021 by kayes
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;
; ==============================================================================
; Projekt : Datei und Archivierungstool
; bearbeitet am : 17.02.2021
; ==============================================================================
; Danksagungen :
; Erstellt unter Mithilfe aus dem autoit.de-Forum von :
; Musashi
; ==============================================================================
; Variablendeklaration
;
Global $gem
Global $fl
Global $rnr
Local $idEditProjekt
;==============================================================================
; Beginn des Formulars:
;
$Form1_1 = GUICreate("Dateitool (c) 2021 Kayes", 620, 300, 197, 145)
;
; Beschriftung
;
$Label1 = GUICtrlCreateLabel("Dateien aus dem Archiv öffnen", 80, 26, 440, 60,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
;
; Beschriftung der drei Felder
;
$Label2 = GUICtrlCreateLabel("Gemarkung", 30, 120, 166, 30,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Flur", 226, 120, 166, 30,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Flurstück", 422, 120, 166, 30,($SS_CENTER))
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
;
; Die drei Eingabefelder
;
Global $gem = GUICtrlCreateEdit("", 30, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont($idEditProjekt,18, 400, 20, "MS Sans Serif")
Global $fl = GUICtrlCreateEdit("", 226, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont($idEditProjekt,18, 400, 0, "MS Sans Serif")
Global $flst = GUICtrlCreateEdit("", 422, 150, 166, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetFont($idEditProjekt,18, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
;
; Startbutton Öffnen
;
$idBtnOpen = GUICtrlCreateButton("Öffnen", 250, 200, 110, 30)
;
Global $sImageFile
$sImageFile = "D:\TESTUMGEBUNG\Archiv\" & $gem & "\" & $fl & "\" & $gem & "_N_" & $fl &"_" & $rnr & ".TIF"
$sImageFile1 = "D:\TESTUMGEBUNG\Archiv\" & $gem & "\" & $fl & "\" & $gem & "_N_" & $fl &"_" & $rnr & ".jpg"
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $idBtnOpen
Dateioeffnen()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func Dateioeffnen()
If FileExists($sImageFile) Then
ShellExecute($sImageFile)
If @error Then Exit MsgBox(BitOR(4096, 16), "Fehler : ", "ShellExecute fehlgeschlagen !" & @CRLF)
Else
MsgBox(BitOR(4096, 16), "Fehler : Datei nicht gefunden", $sImageFile & @CRLF)
EndIf
Alles anzeigen
Hallo zusammen!
ich hoffe die Frage ist hier richtig aufgehoben:
Ich möchte über den Befehl ShellExecute eine Bilddatei öffnen.
Wenn die Datei im Verzeichnis vorhanden ist klappt das Script (Aus der AutoIt Hilfe)
Wenn die Datei allerdings nicht im Verzeichnis vorhanden ist, soll eine Meldung kommen:
Datei nicht gefunden!
Die Meldung kommt zwar, aber vorher kommt noch eine Systemfehlermeldung. Wie kann ich diese verhindern?
Das Script lautet:
#include <MsgBoxConstants.au3>
Example()
Func Example()
Local $sWow64 = ""
If @AutoItX64 Then $sWow64 = "\Wow6432Node"
Local $sFile = ("D:\TESTUMGEBUNG\Projekte\3038_N_010_0009.TIF")
; Execute the readme file (.txt) with the default editor used for text files in Windows.
Local $iPID = ShellExecute($sFile)
If $iPID = 0 then
MsgBox("", "", "Datei nicht gefunden")
EndIf
EndFunc ;==>Example
Alles anzeigen
Hast Du mein Skript vom 5. Mai 2019 denn mal probiert ? RE: Tool zum verschieben von Dateien
Ja, habe ich und es funktioniert auch. Es ist aber leider nicht in "Gebrauch" gegangen.
Ich bin gerade mit einem neuen Projekt beschäftigt und versuche gerade die entsprechenden Bauteile zusammenzuklauben.
Dieses Script gehört auch dazu
Alles wieder gut zusammen zu setzen wird wieder die Herausforderung sein.
Wobei ich momentan auch etwas ähhh gehemmt bin, nach Hilfe zu fragen....
Tut mir leid Jungs, das ich hier wohl eine grundlegende Regel eines Forums verletzt habe.
Den Thread quasi "abzuschließen"
Nachdem ich eure letzten Kommentare hier gelesen habe ist mir überhaupt erst einmal in den Sinn gekommen, das ICH den Thread ja auch zumachen sollte nach erhaltener Hilfe.
Dafür möchte ich mich bei euch wirklich entschuldigen.
ZitatDieser User ist ein echter Härtefall, der das Konzept "ohne Gegenleistung" an seine Grenzen treibt.
Ja, tut mir leid, von eurem Standpunkt kann ich das durchaus verstehen.
Ich versuche jedoch erst einmal auf eigenem Weg mein Ziel zu finden. Da ich mich aber nicht ständig mit AutoIt beschäftige, scheitert es oft schon ziemlich weit am Anfang.
Dies erstellten Tools nutze ich beruflich und sind jetzt schon seit Jahren im täglichen Einsatz.
Alles was mir hilft, meine Arbeit zu optimieren ist mir willkommen und macht mir das Leben leichter.
Ja, es gibt auch Softwaremodule die wir kaufen könnten um das zumindest zum Teil zu erledigen.
Aber zum einen schießen wir mit der fertigen Software mit Kanonen auf Spatzen (was heißt das nur ein winzig kleiner Teil der Software für uns nutzbar ist, die Kosten aber den Nutzen bei WEITEM übersteigen) zum anderen
spielt noch ein weiteres Thema hier mit warum wir die Software (nicht eure) ungern bezahlen.
Der Softwarehersteller hat die Software nur als 2. Standbein. Sein 1. Standbein ist eine direkte Konkurrenz zu uns. Sprich, wir werfen einem direkten Konkurrenten auch noch unser Geld zu. Leider ist die angesprochene Software leider in unserer Branche Standard. Deswegen - so wenig wie möglich.
Desweiteren bleibt mir als Angestelltem auch nicht die Möglichkeit, meine eigene Geldbörse auf zumachen.
Alles in allem - Sollte ich hier einigen Leuten vor den Kopf gestossen haben, so tut mir dies sehr leid.
Guten Abend zusammen!
Das Script aus diesem Thread leistet mittlerweile gute Dienste.
Ich habe ihm nun ein weiteres Extra hinzugefügt.
Manchmal machen wir Fotos und spielen sie in den Bereich unter Berechnungen. Diese Fotos sollen nicht in den Aussendienstbereich verschoben werden, sondern in den echten Datenbereich.
Dieser Teil funktioniert zum Teil auch schon. Was nicht funktioniert ist folgendes: Bilder werden verschoben, Daten in den richtigen Ordner kopiert, aber dann beendet sich das Script und wartet nicht auf weitere Eingaben.
Zweiter Fehler: Beim auswählen von Nein werden die Daten kopiert und die Fotos nicht verschoben, aber auch hier beendet sich das Script.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <FileConstants.au3>
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=REORG.ico
#AutoIt3Wrapper_UseX64 = N
#AutoIt3Wrapper_UseUpx = N ; interne UPX Komprimierung ausschalten
#AutoIt3Wrapper_Res_SaveSource = N
#AutoIt3Wrapper_Res_Description = Kopiertool
#AutoIt3Wrapper_Res_Fileversion = 1.0.0.6
#AutoIt3Wrapper_Res_LegalCopyright = 2018 by kayes
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;
; ==============================================================================
; Projekt : Kopiertool
; bearbeitet am : 08.01.2019
; ==============================================================================
; Danksagungen :
; Erstellt unter Mithilfe aus dem autoit.de-Forum von :
; @Musashi, @BugFix, @autoiter, @alpines, @Code-Jack usw.
; ==============================================================================
; Changelog :
; Setzen der Pfade für Quelle und Ziel
; 1. Versuch Kopierbefehl
; Variable $jjjj definiert und aus dem Kopierbefehl herausgenommen
; Wrapperanweisungen und Kommentarbereich hinzugefügt
; ==============================================================================
; Variablendeklaration
;
Global $download
Global $upload
Global $rechner1
Global $rechner2
Global $rechner3
Global $source
Global $dest
Global $aSourceDest = [["F:\TESTUMGEBUNG\RECHNER1\Daten\", "F:\TESTUMGEBUNG\RECHNER1\Daten\"], _
["F:\TESTUMGEBUNG\RECHNER2\Daten\", "F:\TESTUMGEBUNG\RECHNER2\Daten\"], _
["F:\TESTUMGEBUNG\RECHNER3\Daten\", "F:\TESTUMGEBUNG\RECHNER3\Daten\"], _
["F:\TESTUMGEBUNG\SERVER\Daten\Dokumente\", "F:\TESTUMGEBUNG\SERVER\Daten\Dokumente\Aussendienst\"]]
Local $jjjj
;==============================================================================
; Beginn des Formulars:
;
$Form1_1 = GUICreate("Datenaustausch AD PCs - Server (c) Kayes", 592, 284, 197, 145)
;
; Eingabefeld für das Projekt was vom Server auf den Aussendienstrechner kopiert wird
; vorgegeben wird der Jahrgang 19, danach muss ergänzt werden auf z. B. 19D002 oder 19M003
;
Global $Projektdown
Global $idEditProjektDown = GUICtrlCreateEdit("", 352, 88, 180, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetData($idEditProjektDown, StringRight(@YEAR, 2))
GUICtrlSetFont($idEditProjektDown, 18, 400, 0, "MS Sans Serif")
GUICtrlSetState($idEditProjektDown, $GUI_FOCUS)
;
; Eingabefeld für das Projekt was vom Aussendienstrechner auf den Server kopiert wird
; vorgegeben wird der Jahrgang 19, danach muss ergänzt werden auf z. B. 19D002 oder 19M003
;
Global $Projektup
Global $idEditProjektUp = GUICtrlCreateEdit("", 40, 168, 180, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetData($idEditProjektUp, StringRight(@YEAR, 2))
GUICtrlSetFont($idEditProjektUp, 18, 400, 0, "MS Sans Serif")
;
; Auswahl des Aussendienstrechners
;
$rechner1 = GUICtrlCreateRadio("Rechner 1", 40, 16, 140, 40)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
;GUICtrlSetColor(-1, 0xFF0000)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
$rechner2 = GUICtrlCreateRadio("Rechner 2", 240, 16, 140, 40)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
$rechner3 = GUICtrlCreateRadio("Rechner 3", 432, 16, 140, 40)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
_SetRechnerColor()
$Label1 = GUICtrlCreateLabel("Tablet", 96, 96, 62, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Aussendienstordner", 355, 174, 192, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
;
; Downloadbutton wird gesetzt
;
$download = GUICtrlCreateButton("<=", 256, 96, 28, 28)
GUICtrlSetFont(-1, 16, 800, 0, "MS Sans Serif")
;
; Uploadbutton wird gesetzt
;
$upload = GUICtrlCreateButton("=>", 256, 176, 28, 28)
GUICtrlSetFont(-1, 16, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
;==============================================================================
;
; Auslösen der jeweiligen Funktion über die beiden Buttons Download und Upload
;
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $download
copydown()
Case $upload
jpgcount();Prüfung, ob jpgs im Verzeichnis vorhanden sind
Case $rechner1
_SetRechnerColor()
Case $rechner2
_SetRechnerColor()
Case $rechner3
_SetRechnerColor()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;
; Erste Funktion Kopieren von Server auf Rechner $Projektdown
;
Func copydown()
;Prüfung der Radios und setzen der entsprechende Zielvariablen
If GUICtrlRead($rechner1) = $GUI_CHECKED Then $dest = $aSourceDest[0][1]
If GUICtrlRead($rechner2) = $GUI_CHECKED Then $dest = $aSourceDest[1][1]
If GUICtrlRead($rechner3) = $GUI_CHECKED Then $dest = $aSourceDest[2][1]
Local $source = $aSourceDest[3][0]
;Kopierbefehl mit der $SourceDest [3] [0] und der $dest
;
Local $jjjjdown = "20" & StringLeft(GUICtrlRead($idEditProjektDown), 2)
Local $prodown = GUICtrlRead($idEditProjektDown)
;ConsoleWrite ('< $Projektdown = ' & $Projektdown & @CRLF)
;ConsoleWrite ($source & $jjjjdown & "\" & $prodown & "\Berechnungen" & @CRLF)
;ConsoleWrite ($dest & $jjjjdown & "\" & $prodown & "\" & @CRLF)
Local $CopySuccess
$CopySuccess = DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE)
DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE)
ConsoleWrite('< DirCopy = ' & $CopySuccess & @CRLF)
If Not $CopySuccess Then
MsgBox(16, "Ergebnis von DirCopy : ", "Die Kopieraktion ist fehlgeschlagen ! ")
Else
MsgBox(64, "Ergebnis von DirCopy : ", "Die Kopieraktion war erfolgreich ! ")
EndIf
;DirCopy (($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE)
Return
EndFunc ;==>copydown
;
;
; JGP Zählung und Abfrage
;
Func jpgcount()
If GUICtrlRead($rechner1) = $GUI_CHECKED Then $source = $aSourceDest[0][0]
If GUICtrlRead($rechner2) = $GUI_CHECKED Then $source = $aSourceDest[1][0]
If GUICtrlRead($rechner3) = $GUI_CHECKED Then $source = $aSourceDest[2][0]
Local $dest = $aSourceDest[3][1]
Local $jjjjup = "20" & StringLeft(GUICtrlRead($idEditProjektUp), 2)
Local $proup = GUICtrlRead($idEditProjektUp)
Local $iDir
Local $iFile
Local $hSearch = FileFindFirstFile($source & $jjjjup & "\" & $proup & "\Berechnungen\*.jpg")
Local $sFileName = "", $iDir, $iFile
While 1
$sFileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($sFileName), "D") Then
$iDir += 1
Else
$iFile += 1
EndIf
WEnd
$AnzahlBeides = $iFile
$tmp = MsgBox(3,"Es wurden", $iFile & " jpgs gefunden. Verschieben?")
Switch $tmp
Case 6 ; JA, verschieben der jpgs
FileMove(($source & $jjjjup & "\" & $proup & "\Berechnungen\*.jpg"), ("F:\TESTUMGEBUNG\SERVER\Daten\Dokumente\" & $jjjjup & "\" & $proup & "\Fotos\"), $FC_OVERWRITE + $FC_CREATEPATH)
copyup()
Case 7 copyup();NEIN, kein verschieben, Daten werden komplett verschoben in AD Ordner
Case 2 ; CANCEL, Programmabbruch
Exit
EndSwitch
FileClose($hSearch)
EndFunc ;==>Example
;
Func copyup()
;Prüfung der Radios und setzen der entsprechenden Quellvariablen
If GUICtrlRead($rechner1) = $GUI_CHECKED Then $source = $aSourceDest[0][0]
If GUICtrlRead($rechner2) = $GUI_CHECKED Then $source = $aSourceDest[1][0]
If GUICtrlRead($rechner3) = $GUI_CHECKED Then $source = $aSourceDest[2][0]
Local $dest = $aSourceDest[3][1]
;Kopierbefehl mit der $aSourceDest [3] [1] und der $source
;
Local $jjjjup = "20" & StringLeft(GUICtrlRead($idEditProjektUp), 2)
Local $proup = GUICtrlRead($idEditProjektUp)
;ConsoleWrite ('< $Projektup = ' & $Projektup & @CRLF)
;ConsoleWrite ($source & $jjjjup & "\" & GUICtrlRead($idEditProjektUp) & "\Berechnungen" & @CRLF)
;ConsoleWrite ($dest & $jjjjup & "\" & GUICtrlRead($idEditProjektUp) & "\" & @CRLF)
;DirCopy (($source & $jjjjup & "\" & $proup & "\Berechnungen"), ($dest & $jjjjup & "\" & $proup & "\Berechnungen"), $FC_OVERWRITE)
Local $CopySuccess
$CopySuccess = DirCopy(($source & $jjjjup & "\" & $proup & "\Berechnungen"), ($dest & $jjjjup & "\" & $proup & "\Berechnungen"), $FC_OVERWRITE)
ConsoleWrite('< DirCopy = ' & $CopySuccess & @CRLF)
If Not $CopySuccess Then
MsgBox(16, "Ergebnis von DirCopy : ", "Die Kopieraktion ist fehlgeschlagen ! ")
Else
MsgBox(64, "Ergebnis von DirCopy : ", "Die Kopieraktion war erfolgreich ! ")
EndIf
Return
EndFunc ;==>copyup
; Farbe für aktiven Radiobutton des Rechners setzen :
Func _SetRechnerColor()
If GUICtrlRead($rechner1) = $GUI_CHECKED Then
GUICtrlSetColor($rechner1, $COLOR_RED)
Else
GUICtrlSetColor($rechner1, $COLOR_BLACK)
EndIf
If GUICtrlRead($rechner2) = $GUI_CHECKED Then
GUICtrlSetColor($rechner2, $COLOR_RED)
Else
GUICtrlSetColor($rechner2, $COLOR_BLACK)
EndIf
If GUICtrlRead($rechner3) = $GUI_CHECKED Then
GUICtrlSetColor($rechner3, $COLOR_RED)
Else
GUICtrlSetColor($rechner3, $COLOR_BLACK)
EndIf
EndFunc ;==>_SetRechnerColor
Alles anzeigen
Hat jemand eine Idee?
So, Musashi ,
ich habe dein Script bearbeitet und getestet.
Es funktioniert. Was mir noch fehlen würde wäre ein Aktualisieren (also neu einlesen des Pfades)
Edit: Beim Programmstart sind noch keine Dateien vorhanden. Das Script gibt eine Fehlermeldung aus. Es soll aber eine leere Filelist anzeigen und nachdem Dateien im Ursprungspfad vorhanden sind über den Aktualisieren Button erscheinen.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=MyAutoIt3_Yellow.ico
#AutoIt3Wrapper_UseUpx = N
#AutoIt3Wrapper_Res_SaveSource = N
#AutoIt3Wrapper_Res_Description = Kayes FileMove-Tool
#AutoIt3Wrapper_Res_Fileversion = 1.0.0.1
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; ===============================================================================================
; Programmentwurf zum Verschieben (FileMove) von Dateien aus Quellordner in Zielordner
; erstellt von @Musashi am 05.05.2019
; ergänzt und bearbeitet von @kayes am 05.05.2019
; Letzte Änderung am 05.05.2019
; ===============================================================================================
; Die Pfade von Quell- und Zielordner können in der Filemove.ini-Datei angepasst werden.
; ===============================================================================================================================
#include <File.au3>
#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <WinAPIShPath.au3>
#include <GuiListView.au3>
#include <ListviewConstants.au3>
Opt('MustDeclareVars', 1)
Global $sSourceDir ; Quellordner
Global $sDestDir ; partieller Zielordner
Global $projektname
Global $dest
Global $idEditProjekt
Global $MoveSuccess
Global $sDestDir1, $sDestDir2 ; Zielordner
Global $aFileList ; Dateiliste des Quellordners (inkl. Unterverzeichnisse)
Global $hListView
; Einlesen der Verzeichnisse aus "Filemove.ini" :
$sSourceDir = "F:\TESTUMGEBUNG\Ursprungsdaten"
$sDestDir = "F:\TESTUMGEBUNG\DATEN"
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 $idBtnMove, $idBtnFinish, $idBtnCheckedRev, $idBtnCheckAll
; Einlesen der Dateien aus dem Quellordner :
$aFileList = _FileListToArrayRec(_WinAPI_PathAddBackslash($sSourceDir), "*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
If @error Then
MsgBox($MB_SYSTEMMODAL+$MB_ICONERROR, "Meldung : ", _
"Fehler beim Einlesen der Dateien aus dem Quellordner" & @CRLF)
Return
EndIf
Local $hFont = _WinAPI_CreateFont(18 * $fDPI_SF, 8 * $fDPI_SF, 0, 0, $FW_NORMAL)
$hGUI = GUICreate(" Verschieben von Projektdateien", 950, 910)
Global $Radio1 = GUICtrlCreateRadio("DATA 1", 16, 48, 70, 17)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
Global $Radio2 = GUICtrlCreateRadio("DATA 2", 104, 48, 70, 17)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0) ; _WinAPI_SetWindowTheme($hWnd, $sName = Default, $sList = Default)
Global $Projekt
Global $idEditProjekt = GUICtrlCreateEdit("", 352, 28, 180, 40, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetData($idEditProjekt, StringRight(@YEAR, 2))
GUICtrlSetFont($idEditProjekt, 18, 400, 0, "MS Sans Serif")
GUICtrlSetState($idEditProjekt, $GUI_FOCUS)
GUISetFont(11 * $fDPI_SF, $FW_NORMAL, 1, "Arial") ; Standardfont setzen
$hListView = _GUICtrlListView_Create($hGUI, "Dateiliste : " & $sSourceDir, 20 , 100, 900, 700)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
_WinAPI_SetFont($hListView, $hFont, True)
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER)
; ListViewItems erstellen :
_GUICtrlListView_SetItemCount($hListView, 5000)
For $i = 1 To UBound($aFileList) - 1
_GUICtrlListView_AddItem($hListView, $aFileList[$i])
Next
$idBtnMove = GUICtrlCreateButton("&Verschieben starten", 20, 850, 200, 30)
$idBtnCheckAll = GUICtrlCreateButton("Alles &markieren", 240, 850, 200, 30)
$idBtnCheckedRev = GUICtrlCreateButton("Auswahl &umkehren", 460, 850, 200, 30)
$idBtnFinish = GUICtrlCreateButton("&Beenden", 680, 850, 200, 30, $BS_DEFPUSHBUTTON)
GUISetState(@SW_SHOW, $hGUI)
While 1
$iGuiMsg = GUIGetMsg()
Select
Case $iGuiMsg = $GUI_EVENT_CLOSE
ExitLoop
Case $iGuiMsg = $idBtnFinish
ExitLoop
Case $iGuiMsg = $idBtnCheckedRev
For $i = 0 To _GUICtrlListView_GetItemCount($hListView)-1
If _GUICtrlListView_GetItemChecked($hListView, $i) Then
_GUICtrlListView_SetItemChecked($hListView, $i, False)
Else
_GUICtrlListView_SetItemChecked($hListView, $i, True)
EndIf
Next
Case $iGuiMsg = $idBtnCheckAll
For $i = 0 To _GUICtrlListView_GetItemCount($hListView)-1
If Not _GUICtrlListView_GetItemChecked($hListView, $i) Then
_GUICtrlListView_SetItemChecked($hListView, $i)
EndIf
Next
Case $iGuiMsg = $idBtnMove ; Dateien verschieben :
;MsgBox($MB_SYSTEMMODAL+$MB_ICONINFORMATION, "Meldung : ", "...noch realisieren :-) " & @CRLF)
_filemove()
EndSelect
WEnd
_WinAPI_DeleteObject($hFont)
GUIDelete($hGUI)
EndFunc ;_MainGUI
; -------------------------------------------------------------------------------------------------------------------------------
; Funktion : _DirectoryExists
; -------------------------------------------------------------------------------------------------------------------------------
Func _DirectoryExists($sDirPath )
Local $bReturnValue = False
If FileExists($sDirPath) AND StringInStr(FileGetAttrib($sDirPath), 'D') Then $bReturnValue = True
Return $bReturnValue
EndFunc ;==>_DirectoryExists
Func _filemove()
;Prüfung der Radios und setzen der entsprechende Zielvariablen
If GUICtrlRead($radio1) = $GUI_CHECKED Then $dest = "DATA1\"
If GUICtrlRead($radio2) = $GUI_CHECKED Then $dest = "DATA2\"
Local $jjjj = "20" & StringLeft(GUICtrlRead($idEditProjekt), 2)
Local $pro = GUICtrlRead($idEditProjekt)
; Filemove Befehl
FileMove ( $sSourceDir, $sDestDir & "\" & $jjjj & "\" & $pro & "\" & $dest , $FC_OVERWRITE + $FC_CREATEPATH )
Return
EndFunc ;==>_filemove
Alles anzeigen