Ja, ist schon sinnvoll, das zu automatisieren. Schau mal, ob das passt.
Hier wird ganz stumpf von genau dem Szenario ausgegangen, dass der Projektordner im Verzeichnis "Aussendienst" liegt und darunter der Ordner "Dokument-Explorer" liegt. Du findest das im Skript ab Zeile 77. Ich habe das nicht getestet und hoffe es passt.
Spoiler anzeigen
AutoIt
#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)
If Not FileExists(GUICtrlRead($iStartFolderInput)) Then Return MsgBox(0, "Titel", "Das Start-Verzeichnis existiert nicht!")
_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 $aProject = StringRegExp($sStartFolder, "(?i)\\Aussendienst\\(.*?)\\Dokument-Explorer\\", 1)
If @error Then Return MsgBox(0, "Titel", "Kein passendes Startverzeichnis ausgewählt!")
If StringLen($aProject[0]) <= 2 Then Return MsgBox(0, "Titel", "Projektname zu kurz!")
$iTargetFolder = $iTargetFolder & "\" & StringTrimLeft($aProject[0], 2) & "Berechnungen"
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
EDIT: Hab gerade nochmal egändert! (Den Backslash noch in das Prüfmuster aufgenommen, damit es definitiv diese beiden Verzeichnisse sind.