From 8f38212ae4df7d331c9f365f5628ae9ba9343dd2 Mon Sep 17 00:00:00 2001 From: Developer01 Date: Fri, 3 Jul 2026 11:09:18 +0200 Subject: [PATCH] path2Long in MoveRename --- .../17.14.1577.30250/CodeChunks.db-wal | Bin 193672 -> 539752 bytes .../17.14.1577.30250/SemanticSymbols.db-wal | Bin 201912 -> 597432 bytes ToolCollection/ClassNIWindream.vb | 8 ++- ToolCollection/My Project/AssemblyInfo.vb | 2 +- ToolCollection/frmNIHauptseite.vb | 50 +++++++++++++++--- 5 files changed, 50 insertions(+), 10 deletions(-) diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1577.30250/CodeChunks.db-wal b/.vs/ToolCollection/CopilotIndices/17.14.1577.30250/CodeChunks.db-wal index 18183e7b6f346ce6524b8c081b1158464b4be127..1847cb1ddebf2d3e010768b909e01ad20b0e6f1a 100644 GIT binary patch delta 12852 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 G5&r_wn=jk| delta 15 Wcmdn7TV=;eo`x327N#xCJ466CW(E@g diff --git a/ToolCollection/ClassNIWindream.vb b/ToolCollection/ClassNIWindream.vb index 3cf08c1..11ce1d2 100644 --- a/ToolCollection/ClassNIWindream.vb +++ b/ToolCollection/ClassNIWindream.vb @@ -1092,7 +1092,10 @@ Public Class ClassNIWindream targetpath = targetpath.Replace("\\", "\") Const WMEntityDocument = 1 - + If targetpath.Length >= 256 Then + _Logger.Info($"⚠️ WARNING: Error in NEW_MOVE_FILE - targetpath is too long [{targetpath}]") + Return False + End If _Logger.Debug($"getting WMObject for: {sourcepath}") Try oWMFile = oWMSession.GetWMObjectByPath(WMEntityDocument, sourcepath) @@ -1115,8 +1118,9 @@ Public Class ClassNIWindream Return False End If Catch ex As Exception + _Logger.Warn($"Error in NEW_MOVE_FILE pFileName: [{pFileName}] - targetpath: [{targetpath}]") _Logger.Error(ex) - _Logger.Warn($"Error in NEW_MOVE_FILE pFileName [{pFileName}] - [{targetpath}]") + If Not IsNothing(oWMFile) Then oWMFile.unlock() End If diff --git a/ToolCollection/My Project/AssemblyInfo.vb b/ToolCollection/My Project/AssemblyInfo.vb index aa3ff7e..747f15d 100644 --- a/ToolCollection/My Project/AssemblyInfo.vb +++ b/ToolCollection/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 262547d..111ce28 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -1783,7 +1783,8 @@ Public Class frmNIHauptseite End Sub Private Function FolderForIndex(oDynamicFolder As String, myWMDocument As WMObject) As String Try - _Logger.Debug("Dynamic folder before cleaning: " & oDynamicFolder) + _Logger.Debug($"FolderForIndex -> Dynamic folder before cleaning: {oDynamicFolder}") + ' 1. Platzhalter durch tatsächliche Werte ersetzen Dim resolvedFolder As String = ResolveFolderPlaceholders(oDynamicFolder, myWMDocument) If String.IsNullOrEmpty(resolvedFolder) Then @@ -1795,8 +1796,14 @@ Public Class frmNIHauptseite Dim pathWithoutDrive As String = resolvedFolder If resolvedFolder.Length >= 2 AndAlso resolvedFolder.Chars(1) = ":"c Then - driveLetter = resolvedFolder.Substring(0, 2) ' z.B. "W:" - pathWithoutDrive = resolvedFolder.Substring(2) ' Rest des Pfads + ' Wenn Backslash vorhanden (W:\), 3 Zeichen nehmen, sonst 2 (W:) und Backslash anfügen + If resolvedFolder.Length >= 3 AndAlso resolvedFolder.Chars(2) = "\"c Then + driveLetter = resolvedFolder.Substring(0, 3) ' z.B. "W:\" + pathWithoutDrive = resolvedFolder.Substring(3) + Else + driveLetter = resolvedFolder.Substring(0, 2) & "\" ' z.B. "W:" -> "W:\" + pathWithoutDrive = resolvedFolder.Substring(2) + End If End If ' 3. Ungültige Zeichen aus jedem Ordnernamen entfernen @@ -1804,9 +1811,15 @@ Public Class frmNIHauptseite ' 4. Vollständigen Pfad zusammensetzen Dim cleanedFolder As String = driveLetter & pathWithoutDrive - _Logger.Debug("Dynamic folder after cleaning: " & cleanedFolder) + _Logger.Debug($"FolderForIndex -> Dynamic folder after cleaning: {cleanedFolder}") - ' 5. Ordner erstellen falls nicht vorhanden + ' 5. Pfadlängen-Prüfung (Windows MAX_PATH = 260, aber besser bei 256 warnen) + If cleanedFolder.Length >= 256 Then + _Logger.Info($"⚠️ WARNING: Folder path is too long ({cleanedFolder.Length} characters): {cleanedFolder}") + Return "Path2Long" + End If + + ' 6. Ordner erstellen falls nicht vorhanden If Not Directory.Exists(cleanedFolder) Then Directory.CreateDirectory(cleanedFolder) _Logger.Debug($"Folder '{cleanedFolder}' has been created...") @@ -1933,7 +1946,26 @@ Public Class frmNIHauptseite Dim rgPattern As String = My.Settings.REGEX_INVALID_PATH Dim objRegEx As New Regex(rgPattern) - Dim pathSegments As String() = path.Split("\"c) + + ' UNC-Präfix oder Laufwerksbuchstaben merken + Dim prefix As String = String.Empty + Dim workingPath As String = path + + ' Prüfen ob UNC-Pfad (beginnt mit \\) + If path.StartsWith("\\") Then + prefix = "\\" + workingPath = path.Substring(2) + ' Prüfen ob Laufwerksbuchstabe (z.B. W:\) + ElseIf path.Length >= 3 AndAlso path.Chars(1) = ":"c AndAlso path.Chars(2) = "\"c Then + prefix = path.Substring(0, 3) ' z.B. "W:\" + workingPath = path.Substring(3) + ElseIf path.Length >= 2 AndAlso path.Chars(1) = ":"c Then + prefix = path.Substring(0, 2) & "\" ' z.B. "W:" wird zu "W:\" + workingPath = path.Substring(2) + End If + + ' Pfad in Segmente aufteilen und bereinigen + Dim pathSegments As String() = workingPath.Split("\"c) Dim cleanedSegments As New List(Of String) For Each segment As String In pathSegments @@ -1950,7 +1982,8 @@ Public Class frmNIHauptseite cleanedSegments.Add(cleanedSegment) Next - Return String.Join("\", cleanedSegments) + ' Pfad mit Präfix zusammensetzen + Return prefix & String.Join("\", cleanedSegments) End Function @@ -1978,6 +2011,9 @@ Public Class frmNIHauptseite End If If oTargetpath = "" Then Return True + ElseIf oTargetpath = "Path2Long" Then + _Logger.Info($"⚠️ WARNING: Targetpath is too long for document [{myWMDocument.aName}] - Move and Rename skipped!") + Return True End If 'schonmal den gesamten Pfad laden - OHNE Extension zuerst