diff --git a/BasicNodes/File/MoveFile.cs b/BasicNodes/File/MoveFile.cs index d20eab3b..eb676f58 100644 --- a/BasicNodes/File/MoveFile.cs +++ b/BasicNodes/File/MoveFile.cs @@ -191,9 +191,15 @@ public class MoveFile : Node if (moveFolder) // we only want the full directory relative to the library, we don't want the original filename { - destFolder = Path.Combine(destFolder, args.RelativeFile); - destFolder = destFolder[..destFolder.LastIndexOf(separator)]; - args.Logger?.ILog("Using relative directory: " + destFolder); + args.Logger?.ILog("Relative File: " + args.RelativeFile); + string relative = args.RelativeFile.Replace("\\", separator).Replace("/", separator); + if (relative.StartsWith(separator)) + relative = relative[1..]; + if (relative.IndexOf(separator) > 0) + { + destFolder = destFolder + separator + relative.Substring(0, relative.LastIndexOf(separator)); + args.Logger?.ILog("Using relative directory: " + destFolder); + } } // dest = Path.Combine(dest, argsFilename); diff --git a/BasicNodes/Tests/MoveTests.cs b/BasicNodes/Tests/MoveTests.cs index bcf4b012..0873981c 100644 --- a/BasicNodes/Tests/MoveTests.cs +++ b/BasicNodes/Tests/MoveTests.cs @@ -91,6 +91,18 @@ public class MoveTests Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.mkv", dest); } + + [TestMethod] + public void MoveTests_MoveFolder() + { + var logger = new TestLogger(); + var args = new NodeParameters(@"\\tower\downloads\downloaded\tv\The.Walking.Dead.Dead.City.S01E04\some-file.mkv", logger, false, string.Empty); + args.RelativeFile = @"The.Walking.Dead.Dead.City.S01E04\some-file.mkv"; + + string dest = MoveFile.GetDestinationPath(args, @"\\tower\downloads\converted\tv", null, moveFolder:true); + + Assert.AreEqual(@"\\tower\downloads\converted\tv\The.Walking.Dead.Dead.City.S01E04\some-file.mkv", dest); + } } #endif \ No newline at end of file