根据名称将文件移动到相应的文件夹
本文关键字:文件夹 移动 文件 | 更新日期: 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
命名空间中的File
和Directory
类。您可以使用 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);
}