1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. kayes

Beiträge von kayes

  • Kopierhilfe

    • kayes
    • 8. August 2017 um 20:36

    hmm, immer noch derselbe Fehler...

    edit:

    in

    $sStartFolder="E:\Daten\"

    ist Daten vorhanden. Muss in der Zeile

    Local $aProject = StringRegExp($sStartFolder, "(?i)\\Daten\\(.*?)\\Dokument-Explorer\\", 1)

    dann nochmal Daten sein?

  • Kopierhilfe

    • kayes
    • 8. August 2017 um 20:14

    Hmm,

    "kein passendes Startverzeichnis ausgewählt!"

    Etwas stimmt nicht...

    Code
    Local $aProject = StringRegExp($sStartFolder, "(?i)\\Aussendienst\\(.*?)\\Dokument-Explorer\\", 1)

    Dokument-Explorer? Müsste nach Aussendienst nicht der Jahrgang kommen?

  • Kopierhilfe

    • kayes
    • 8. August 2017 um 19:15

    ja, hast du richtig erfasst.

    Ist kompliziert nicht wahr?

    Bisher wurde so jahrelang agiert. Und das mit copy/paste. Dabei sind hin und wieder auch mal Daten verschütt gegangen, weil man mit dem Start und Ziel mal durcheinander kam.
    Und erst über die bat und jetzt als grafisch ansprechende Oberfläche soll es einfacher und sicherer werden.

  • Kopierhilfe

    • kayes
    • 8. August 2017 um 18:51

    Hier mal der Ablauf in Bildern:
    Ausschnitt 1: Auswahl der zu kopierenden Verzeichnisse
    Ausschnitt 2: Startpfad (Unterordner Berechnungen der ausgewählten Projekte)
    Ausschnitt 3: Zielpfad (Berechnungen wird in einen Pfad kopiert mit Jahrgang/Projekt
    Vielleicht macht es das klarer:

    https://picload.org/view/rwacpopw/kayes.jpg.html

    und Entschuldigung, wenn ich mich nicht klar verständlich gemacht habe und dir dadurch Mehrarbeit entstanden ist....

    #sorry

    In der bat oben habe ich immer das Project eingegeben, dann abgefragt ob ein neues kopiert werden soll usw...
    In der GUI soll nun eine List angezeigt werden in der ich mehrere Projekte auswähle und die dann in die richtigen Ordner kopiert werden.

  • Kopierhilfe

    • kayes
    • 8. August 2017 um 16:20

    Ja, aber wie baue ich

    Code
    @echo off
    CLS
    
    
    :PANASONIC
    Color E
    ECHO.
    	ECHO UEBERTRAGUNG PANASONIC AUF PC
    ECHO.
    	REM set /P jjjj= Jahrgang (xxxx)? 
            set /P projekt= Projekt (xxDxxx)? 
    	set jjjj=20%projekt:~0,2%
    
    
    ECHO.
    xcopy "E:\Daten\20%projekt%\Dokument-Explorer\Berechnungen\*" "F:\Dokumente\Aussendienst\%jjjj%\%projekt%\Berechnungen\"
    ECHO.
    ECHO Datenuebertragung beendet
    ECHO.
    set /P x= (1) weiteres Projekt  oder oder (2) Ende? 
    		if /I "%x%"=="1" goto PANASONIC
    		if /I "%x%"=="2" goto ende
    		echo Fehler: [%w%]        
    goto ende
    
    
    :ende
    Alles anzeigen


    so um das ich es in

    C
    #include <File.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    Global $iWidth=800,$iHeight=900,$sStartFolder="E:\Daten\",$sTargetFolder="F:\Dokumente\Aussendienst\",$arFileListViewItems[0]
    $hGui=GUICreate("Datensicherung von PANASONIC auf SERVER",$iWidth,$iHeight)
    $iStartFolderLabel=GUICtrlCreateLabel("Startordner: ",5,7,55,20)
    $iStartFolderInput=GUICtrlCreateInput($sStartFolder,65,5,$iWidth-100-40,20)
    GUICtrlSetState(-1,$GUI_DISABLE)
    $iStartFolderButton=GUICtrlCreateButton("...",$iWidth-70,2,30,25)
    GUICtrlSetState(-1,$GUI_DISABLE)
    $iTargetFolderLabel=GUICtrlCreateLabel("Zielordner: ",5,$iHeight-22-30,55,20)
    $iTargetFolderInput=GUICtrlCreateInput($sTargetFolder,65,$iHeight-25-30,$iWidth-65-40,20)
    GUICtrlSetState(-1,$GUI_DISABLE)
    $iStartFolderGo=GUICtrlCreateButton("List",$iWidth-35,2,30,25)
    $iFileListView=GUICtrlCreateListView("File",5,30,$iWidth-10,$iHeight-30-85,-1,BitOR($LVS_EX_CHECKBOXES,$LVS_EX_FULLROWSELECT,$WS_EX_CLIENTEDGE))
    _GUICtrlListView_SetColumnWidth($iFileListView,0,$iWidth-35)
    $iTargetFolderButton=GUICtrlCreateButton("...",$iWidth-35,$iHeight-27-30,30,25)
    GUICtrlSetState(-1,$GUI_DISABLE)
    $iCopyProgress=GUICtrlCreateProgress(5,$iHeight-25,$iWidth-165,20)
    $iCopyStartButton=GUICtrlCreateButton("Start",$iWidth-155,$iHeight-25,75,20)
    $iCopyStopButton=GUICtrlCreateButton("Stop",$iWidth-80,$iHeight-25,75,20)
    ;$iDelButton=GUICtrlCreateButton("Löschen",$iWidth-155,$iHeight-25,75,20)
    GUICtrlSetState($iCopyStopButton,$GUI_DISABLE)
    GUISetState()
    _ListFiles(GUICtrlRead($iStartFolderInput))
    While 1
    	$iMsg=GUIGetMsg()
    	Switch $iMsg
    		case -3
    			exit
    		case $iStartFolderButton
    			$sFolder=FileSelectFolder("Wähle Start Ordner","",0,$sStartFolder,$hGui)
    			If $sFolder<>"" Then GUICtrlSetData($iStartFolderInput,$sFolder)
    			_ListFiles(GUICtrlRead($iStartFolderInput))
    		case $iStartFolderGo
    			_ListFiles(GUICtrlRead($iStartFolderInput))
    		case $iCopyStartButton
    			_MoveDir()
    		case $iTargetFolderButton
    			$sFolder=FileSelectFolder("Wähle Ziel Ordner","",0,$sTargetFolder,$hGui)
    			If $sFolder<>"" Then GUICtrlSetData($iTargetFolderInput,$sFolder)
    	EndSwitch
    WEnd
    Func _ListFiles($sPath)
    	_GUICtrlListView_DeleteAllItems($iFileListView)
    	local $arFiles=_FileListToArray($sPath,"*",$FLTA_FOLDERS,true)
    	ReDim $arFileListViewItems[UBound($arFiles)-1]
    	for $i=1 to UBound($arFiles)-1 step 1
    		$arFileListViewItems[$i-1]=GUICtrlCreateListViewItem($arFiles[$i],$iFileListView)
    	next
    EndFunc
    Func _MoveDir()
    	;GUICtrlSetState($iStartFolderInput,$GUI_DISABLE)
    	;GUICtrlSetState($iStartFolderButton,$GUI_DISABLE)
    	GUICtrlSetState($iStartFolderGo,$GUI_DISABLE)
    	;GUICtrlSetState($iTargetFolderInput,$GUI_DISABLE)
    	;GUICtrlSetState($iTargetFolderButton,$GUI_DISABLE)
    	GUICtrlSetState($iCopyStartButton,$GUI_DISABLE)
    	GUICtrlSetState($iCopyStopButton,$GUI_ENABLE)
        ;GUICtrlSetState($iDelButton,$GUI_ENABLE)
    	local $arMoveDir[_GUICtrlListView_GetItemCount($iFileListView)][2],$iCount=0
    	for $i=0 to _GUICtrlListView_GetItemCount($iFileListView)-1 step 1
    		If _GUICtrlListView_GetItemChecked($iFileListView,$i) Then
    			$arMoveDir[$iCount][0]=_GUICtrlListView_GetItemText($iFileListView,$i,0)
    			$arMoveDir[$iCount][1]=$i
    			$iCount+=1
    		Else
    			GUICtrlSetBkColor($arFileListViewItems[$i],0xFFFF00)
    		EndIf
    	next
    	ReDim $arMoveDir[$iCount][2]
    	GUICtrlSetData($iCopyProgress,0)
    	local $iTargetFolder=GUICtrlRead($iTargetFolderInput)
    	local $iPercent=0
    	for $i=0 to UBound($arMoveDir)-1 step 1
    		If Int($i/UBound($arMoveDir)*100)<>$iPercent Then
    			$iPercent=Int($i/UBound($arMoveDir)*100)
    			GUICtrlSetData($iCopyProgress,$iPercent)
    		EndIf
    		local $arFile=StringSplit($arMoveDir[$i][0],"\",1+2)
    		local $sFilename=$arFile[UBound($arFile)-1]
    		If DirCopy($arMoveDir[$i][0],$iTargetFolder&"\"&$sFilename,BitOR(1,8)) Then
    			GUICtrlSetBkColor($arFileListViewItems[$arMoveDir[$i][1]],0x00FF00)
    		Else
    			GUICtrlSetBkColor($arFileListViewItems[$arMoveDir[$i][1]],0xFF0000)
    		EndIf
    		Switch GUIGetMsg()
    			case -3
    				exit
    			case $iCopyStopButton
    				ExitLoop
    		EndSwitch
    	next
    	GUICtrlSetData($iCopyProgress,100)
    	;GUICtrlSetState($iStartFolderInput,$GUI_ENABLE)
    	;GUICtrlSetState($iStartFolderButton,$GUI_ENABLE)
    	GUICtrlSetState($iStartFolderGo,$GUI_ENABLE)
    	;GUICtrlSetState($iTargetFolderInput,$GUI_ENABLE)
    	;GUICtrlSetState($iTargetFolderButton,$GUI_ENABLE)
    	GUICtrlSetState($iCopyStartButton,$GUI_ENABLE)
    	GUICtrlSetState($iCopyStopButton,$GUI_DISABLE)
    EndFunc
    Alles anzeigen

    funktioniert?

  • Kopierhilfe

    • kayes
    • 5. August 2017 um 21:18

    So, das kopieren der Ordner funktioniert nun.

    Kann man diesen Kopierbefehl noch weiter parametrieren?
    Der Befehl aus der bat lautete:

    Code
    xcopy "\\ABKADPC\Daten\20%projekt%\Dokument-Explorer\Berechnungen\*" "F:\Daten\Dokumente\Aussendienst\%jjjj%\%projekt%\Berechnungen\"


    Der Ablauf ist folgender:

    Morgens nutze ich unsere Büroorganisationssoftware um komplette Aufträge zu exportieren.
    Unter einem Pfad wird nun der Auftrag als Ordner 2017D123 mit dem Unterordner Dokument-Explorer und den darin enthaltenen Unterordnern Berechnungen, Fotos, Unterlagen, Rechnungen, Anträge, Verträge kopiert.
    Ich erfasse den ganzen Tag über Daten in dem Ordner Berechnungen.
    Diesen Ordner importiert unsere Software aber nicht. Bisher haben wir das über copy/paste gelöst bis ich die oben erwähnte bat zur Verfügung hatte.

    Damit wir nicht aus Versehen Daten abends überschreiben, kopieren wir diese Daten in einen Ordner Aussendienst/2017/17d123/Berechnungen
    Dann werden die Orginal Daten geöffnet und die Aussendienst Daten importiert.

    Frage ist nun: Wie passe ich hier das Script an damit ich die gewählten Daten in den richtigen Ordner kopiere?
    Der copyDir Befehl hat nur einige wenige Parameter zur Verfügung. Das Einsortieren in den richtigen Ordner wird schwieriger da wir auch ältere Jahrgänge mit im Boot haben.

    Soweit ich verstanden habe könnte ich den xcopy Befehl auch in AutoIt nutzen, aber wie werden hier die Parameter angepasst für AutoIt?

  • Kopierhilfe

    • kayes
    • 5. August 2017 um 13:03

    So, habe jetzt auch mal die Gelegenheit mich intensiver mit dem Script zu beschäftigen.

    Austausch von

    Code
    local $arFiles=_FileListToArray($sPath,"*",$FLTA_FILES,true)


    in

    Code
    local $arFiles=_FileListToArray($sPath,"*",$FLTA_FOLDERS,true)


    hat schon einmal bewirkt das jetzt die Ordner wie gewollt angezeigt werden.
    Nur mit dem kopieren habe ich jetzt so meine Schwierigkeiten.
    Aus moveFiles muss jetzt irgendwie DirCopy werden.

  • Kopierhilfe

    • kayes
    • 4. August 2017 um 22:24

    Ah, der Fehler taucht auf, weil ich ganze Ordner kopieren will und nicht einzelne Files.
    Im Startordner ist keine einfache Datei vorhanden und dann kommt der Fehler. Sobald eine einzelne Datei im Startordner vorhanden ist funktioniert auch das Script

  • Kopierhilfe

    • kayes
    • 4. August 2017 um 21:33

    Wenn ich die Pfade Start und Ziel fest eingebe erscheint die Meldung:

    In Line 48

  • Kopierhilfe

    • kayes
    • 4. August 2017 um 19:08

    Hallo,

    reicht es die Zeilen 20-22 auszukommentieren?

    Code
    ;~     $iCopyStartButton=GUICtrlCreateButton("Start",$iWidth-155,$iHeight-25,75,20)
    ;~     $iCopyStopButton=GUICtrlCreateButton("Stop",$iWidth-80,$iHeight-25,75,20)
    ;~     GUICtrlSetState($iCopyStopButton,$GUI_DISABLE)
  • Kopierhilfe

    • kayes
    • 3. August 2017 um 21:15

    Danke Kanashius,

    ich habe das Script so eingetragen und als Test laufen lassen. Fazit: Super! Nur eine Sache hätte ich da noch:

    Ich hätte gerne einen festen Start- und einen festen Zielordner.


    • Code
      Global $iWidth=800,$iHeight=600,$sStartFolder="E:\Panasonic\Daten\",$sTargetFolder="F:\Daten\Dokumente\Aussendienst\*",$arFileListViewItems[0]

    Diese Anpassung wirft einen Fehler in Zeile 46 auf
    Error: Variable subscript badly formatted

    Weisst du die Ursache?

  • Kopierhilfe

    • kayes
    • 2. August 2017 um 21:35

    Hallo Leute,

    ich habe mir eine kleine bat Datei geschrieben die mir im alltäglichen Leben Kopierarbeit abnimmt.

    Auf meinen Aussendienstrechner nehme ich Projekte mit, die ich im Laufe des Tages bearbeite. Einige bleiben eine längere Zeit auf dem AD Rechner damit ich im Notfall die Daten dabei habe.

    Abends müssen dann die bearbeiteten Projekte auf den Server übertragen werden, damit die Leute im Innendienst sie weiter bearbeiten können.

    Diesen Vorgang möchte ich nun in einer grafisch ansprechenderen Variante haben. Könnt ihr mir dabei helfen?

    Der Ablauf ist folgender:

    - Programmstart
    - das Programm durchsucht einen Standardpfad und es werden die enthaltenen Projekte angezeigt, mit einer Checkbox davor.
    Beispiel (Das O symbolisiert die Checkbox zum anhaken)

    O 15D133
    O 15D336
    O 16D656
    O 17d466
    .
    .
    .
    .
    O alle Projekte

    Schaltfläche kopieren Schaltfläche Beenden


    Ich sehe also die vorhandenen Projekte und kann einzelne oder auch alle anwählen.
    kopieren startet den Vorgang, Beenden beendet das Programm
    wählt man kopieren läuft der Vorgang. Nach Fertigstellung erscheint die Mitteilung Beendet und mit der Schaltfläche OK beendet man das Programm.

    Wie schaut das aus? Ist das machbar und traut sich jemand da ran? ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™