根据名称将文件移动到相应的文件夹

本文关键字:文件夹 移动 文件 | 更新日期: 2023-09-27 18:22:03

大家好,认识得很好! 我已经尝试了很多不同的方法/程序来尝试解决我的问题。 我是一名新手程序员,上过Visual Basic课程和Visual C#课程。

我正在 C# 中使用它

从制作一个非常基本的移动文件程序开始,它对一个文件工作正常,但正如我提到的,我需要根据名称移动大量文件

我正在尝试做的是根据用户名将 .pst (例如 dave.pst( 文件从我的 Exchange 服务器移动到与 .pst 文件同名的用户文件夹(文件夹 = dave(中的备份服务器上

理想的程序是:从扩展名为 .pst 的文件夹中获取文件将文件移动到 .pst 文件扩展名前面具有相同名称的相应文件夹

更新:

// String pstFileFolder = @"C:'test'";
// var searchPattern = "*.pst";
// var extension = ".pst";
//var serverFolder = @"C:'test3'";
// String filename = System.IO.Path.GetFileNameWithoutExtension(pstFileFolder);
// Searches the directory for *.pst
DirectoryInfo sourceDirectory = new DirectoryInfo(@"C:'test'");
String strTargetDirectory = (@"C:'test3'");
Console.WriteLine(sourceDirectory);
Console.ReadKey(true);>foreach (FileInfo file in sourceDirectory.GetFiles()) {
    Console.WriteLine(file);
    Console.ReadKey(true);
    // Try to create the directory.
    System.IO.Directory.CreateDirectory(strTargetDirectory);
    file.MoveTo(strTargetDirectory + "''" + file.Name);
}

这只是一个简单的复制过程。 我完全知道。 这

Console.WriteLine(file(; Console.ReadKey(true(;

现在用于验证目的,以确保我获得正确的文件并且我是。 现在我只需要根据 .pst 文件的名称找到文件夹(用户的文件夹已经创建(,创建一个文件夹(例如年份为 0304(,然后根据名称复制该 .pst。

非常感谢你们的帮助。 @yuck,感谢您的代码。

根据名称将文件移动到相应的文件夹

查看 System.IO 命名空间中的FileDirectory类。您可以使用 Directory.GetFiles(( 方法来获取需要传输的文件的名称。

下面是一个控制台应用程序,可帮助您入门。请注意,没有任何错误检查,它对文件的命名方式做出了一些假设(例如,它们以 .pst 结尾并且不包含名称中的其他地方(:

private static void Main() {
    var pstFileFolder = @"C:'TEMP'PST_Files'";
    var searchPattern = "*.pst";
    var extension = ".pst";
    var serverFolder = @"''SERVER'PST_Backup'";
    // Searches the directory for *.pst
    foreach (var file in Directory.GetFiles(pstFileFolder, searchPattern)) {
        // Exposes file information like Name
        var theFileInfo = new FileInfo(file);
        // Gets the user name based on file name
        // e.g. DaveSmith.pst would become DaveSmith
        var userName = theFileInfo.Name.Replace(extension, "");
        // Sets up the destination location
        // e.g. ''SERVER'PST_Backup'DaveSmith'DaveSmith.pst
        var destination = serverFolder + userName + @"'" + theFileInfo.Name;
        File.Move(file, destination);
    }
}

在这种情况下System.IO是你的朋友;)

首先,通过以下方式确定文件名:

String filename = System.IO.Path.GetFileNameWithoutExtension(SOME_PATH)

要创建新文件夹的路径,请使用Path.Combine

String targetDir = Path.Combine(SOME_ROOT_DIR,filename);

接下来,根据给定的文件名创建具有名称的文件夹

System.IO.Directory.CreateDirectory(targetDir);

啊!您需要有文件名,但这次要有扩展名。 Path.GetFileName

String fileNameWithExtension = System.IO.Path.GetFileName(SOME_PATH);

您可以将文件(按 File.Move (移动到其中:

System.IO.File.Move(SOME_PATH,Path.Combine(targetDir,fileNameWithExtension)

Laster已经向您展示了如何在文件夹中获取文件列表。

我个人更喜欢DirectoryInfo,因为它更面向对象。

DirectoryInfo sourceDirectory = new DirectoryInfo("C:'MySourceDirectoryPath");
String strTargetDirectory = "C:'MyTargetDirectoryPath";
foreach (FileInfo file in sourceDirectory.GetFiles())
{
    file.MoveTo(strTargetDirectory + "''" + file.Name);
}
相关文章: