我正在尝试为 LetahlCompany mod 制作 dll。目标是将音频文件从我的 mod 复制/粘贴到另一个 mod,这样当我添加更多音频时,人们只需单击“更新”即可。 我不能只设置目录 (c:/user/mod/files),因为文件正在使用配置文件 (c:/user/profiles/mod/files)。
所以我想像这样复制文件:
所以在这种情况下它可以是“Profile1”或“Profile2”,所以它不像复制文件目录那么简单
我在编码方面完全是菜鸟,我试图理解我在做什么,但这很难。做一件事有多种方法,所以我不知道在做研究时我到底在寻找什么。
所以这是我认为可以按照我想要的方式工作的代码。
namespace SoundsMove
{
class Program
{
static void Main(string[] args)
{
string ModSource = @"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\MyMod\MySounds\";
string ModDest = @"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\TheMod\HisSounds\";
var allFiles = Directory.GetFiles(ModSource);
foreach (var file in allFiles)
{
var FileModDest = ModDest + Path.GetFileNameWithoutExtension(file) + Path.GetExtension(file);
File.Move(file, FileModDest);
}
}
}
}
但正如我所说,该配置文件可以命名为任何名称,对我来说它是“Hide'N'Seek”。 你可以看到我必须返回 2 个parent 文件夹,然后找到 2 个 subs solfers。 这是我在 youtube 上找到的代码,我没有找到方法让 2 个父母回来然后再次移动 2 个子。我什至不知道如何编码以避免将整个路径写入我的文件。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
string sourceFolder = @"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\MyMod\MySounds\";
string destinationFolder =@"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\TheMod\HisSounds\";
SyncFolders(sourceFolder, destinationFolder);
}
static void SyncFolders(string sourceFolder, string destinationFolder)
{
// Create the destination folder if it doesn't exist
if (!Directory.Exists(destinationFolder))
{
Directory.CreateDirectory(destinationFolder);
}
// Get all files in the source folder
var sourceFiles = Directory.GetFiles(sourceFolder);
foreach (var sourceFile in sourceFiles)
{
string fileName = Path.GetFileName(sourceFile);
string destFile = Path.Combine(destinationFolder, fileName);
// Copy the file if it doesn't exist or if it is newer than the destination file
if (!File.Exists(destFile) || File.GetLastWriteTime(sourceFile) > File.GetLastWriteTime(destFile))
{
File.Copy(sourceFile, destFile, true);
Console.WriteLine($"Copied: {fileName}");
}
}
}
}