Synchronisieren ?? kniffliges Problemchen

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
KalkuNix
Junior Member
Junior Member
Posts: 11
Joined: 2006-05-11, 09:40 UTC

Synchronisieren ?? kniffliges Problemchen

Post by *KalkuNix »

HuHu@all,

ich braeuchte mal Eure Kompetenz.... :D

Folgendes Problem...
ich habe im linken Fenster ein Oberverzeichnis mit hunderten Unterverzeichnissen, in denen einzelne PDF-Files enthalten sind.

im rechten Fenster habe ich nur eine flache Struktur mit einem Verzeichnis, keine Unterverzeichnisse. Hier sind hunderte von PDF-files drin....

Aufgabe waere nun die rechten PDF-Files in die linke Ordnerstruktur zu "beamen"
Die Dateinamen der PDF-files links + rechts sind gleich, soll heissen dass die Files auf der rechten Seite die modifizierten Files sind, allerdings habe ich die Ordnerstruktur nicht.

Ich habe mittlerweile schon einiges versucht, aber ich bekomme es nicht hin...
Kann mir da jemand weiterhelfen?

Mein Dank wird Euch verfolgen....
:lol:
Bye, bye von KalkuNix,
User avatar
van Dusen
Power Member
Power Member
Posts: 684
Joined: 2004-09-16, 19:30 UTC
Location: Sinzig (Rhein), Germany

Post by *van Dusen »

Eine Lösung nur mit TC-Mitteln hab' ich leider nicht parat; Du könntest die Aufgabe aber mit einem Script lösen, z.B. diesem AutoIt3-Script:

Code: Select all

AutoItSetOption("WinTitleMatchMode", 4)

If Not WinExists("classname=TTOTAL_CMD") Then Exit
Global $strErrMsg = ""
Global $intNumSourceFilesCopied = 0

$strClipSave = ClipGet()
ClipPut("")

;*** cm_CopyTrgPathToClip=2030;Zielverzeichnis in Zwischenablage kopieren
_TCPostMessage(2030)
$strTargetDir = ClipGet()
;*** cm_CopyFullNamesToClip=2018;Copy names with full path
_TCPostMessage(2018)

If ClipGet() = "" Then
	ClipPut($strClipSave)
	Exit
EndIf

Global $arrListOfSourceFiles = StringSplit(ClipGet(), @CRLF, 1)
ClipPut($strClipSave)

$strErrMsg = $arrListOfSourceFiles[0] & " Dateien im Zielverzeichnis <" & $strTargetDir & "> updaten?"
If MsgBox(32+4+256, @ScriptName, $strErrMsg) = 7 Then Exit

$strErrMsg = ""
_RecurseDir($strTargetDir)
If $strErrMsg = "" Then
	$strErrMsg = "Fertig!" & @LF & @LF & "(" & $intNumSourceFilesCopied & " von " & $arrListOfSourceFiles[0] & " Dateien kopiert)"
	MsgBox(64, @ScriptName, $strErrMsg)
Else
	MsgBox(48, @ScriptName, $strErrMsg)
EndIf

Exit

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func _TCPostMessage($msg)
	DllCall("user32.dll", "int", "PostMessage", "hwnd", WinGetHandle("classname=TTOTAL_CMD"), "int", 1075, "int", $msg, "int", 0)
	Sleep(100)
EndFunc

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func _RecurseDir($strDirname)
	
	If FileChangeDir($strDirname) = 0 Then Return
	
	Local $strFilename
	Local $shndSearch = FileFindFirstFile("*.*")
	If @error = 1 Then Return
	
	While 1
		
		$strFilename = FileFindNextFile($shndSearch)
		If @error Then ExitLoop
		
		If StringInStr(FileGetAttrib($strFilename), "D") Then
			_RecurseDir($strFilename)
			FileChangeDir("..")
			
		Else
			For $i = 1 To $arrListOfSourceFiles[0]
				$p = StringInStr($arrListOfSourceFiles[$i], "\", 0, -1)
				If $strFilename = StringMid($arrListOfSourceFiles[$i], $p+1) Then
					If FileMove($strFilename, $strFilename & ".alt") = 0 Then
						$strErrMsg &= "<" & @WorkingDir & "\" & $strFilename & "> konnte nicht in "
						$strErrMsg &= "<" & @WorkingDir & "\" & $strFilename & ".alt> umbenannt werden" & @LF
					EndIf
					If FileCopy($arrListOfSourceFiles[$i], ".") = 0 Then
						$strErrMsg &= "<" & $arrListOfSourceFiles[$i] & "> konnte nicht nach "
						$strErrMsg &= "<" & @WorkingDir & "> kopiert werden" & @LF & @LF
					Else
						$intNumSourceFilesCopied += 1
					EndIf
				EndIf
			Next
			
		EndIf
		
	WEnd
	
	FileClose($shndSearch)
	Return
	
EndFunc
Benutzung:
Im TC die aktuellen Dateien im Quell-Panel (im aktiven Panel) markieren, die in die (Unter-)Verzeichnisstruktur des Zielverzeichnisses kopiert werden sollen. Dann das Script laufen lassen.
Hinweis: Die alten Dateien werden nicht überschrieben, sondern vor dem Kopieren der neuen Dateien umbenannt (".alt" wird an den Dateinamen angehängt).
User avatar
KalkuNix
Junior Member
Junior Member
Posts: 11
Joined: 2006-05-11, 09:40 UTC

Post by *KalkuNix »

Hi,
das ist ja supergut.....

Vielen,vielen Dank, hat bestens funktioniert!!!!
Bye, bye von KalkuNix,
Post Reply