大家好,很满意!我尝试了很多不同的方法/程序来尝试解决我的问题。我是一名新手程序员并且已经学习了Visual Basic类和Visual C#类。
我正在C#
中使用它我开始制作一个非常基本的移动文件程序,它适用于一个文件,但正如我所提到的,我将需要根据名称移动大量文件
我要做的是将基于用户名的交换服务器上的.pst(例如dave.pst)文件移到用户文件夹(folder = dave)中与.pst同名的备份服务器上文件
理想的计划是: 从扩展名为.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(文件); Console.ReadKey(真);
目前是为了验证目的,以确保我得到正确的文件,我。现在我只需要找到基于.pst文件名称的文件夹(用户的文件夹已经创建),创建一个文件夹(比如说年份为0304),然后根据名称复制.pst。 / p>
非常感谢你的帮助。 @yuck,谢谢代码。
答案 0 :(得分:3)
查看File
命名空间中的Directory
和System.IO
类。您可以使用Directory.GetFiles()方法获取需要传输的文件的名称。
答案 1 :(得分:1)
这是一个让您入门的控制台应用程序。请注意,没有任何错误检查,它会对文件的命名方式做出一些假设(例如,它们以.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);
}
}
答案 2 :(得分:0)
我个人更喜欢DirectoryInfo
因为它更面向对象。
DirectoryInfo sourceDirectory = new DirectoryInfo("C:\MySourceDirectoryPath");
String strTargetDirectory = "C:\MyTargetDirectoryPath";
foreach (FileInfo file in sourceDirectory.GetFiles())
{
file.MoveTo(strTargetDirectory + "\\" + file.Name);
}
答案 3 :(得分:0)
System.IO
是你的朋友;)
首先,通过以下方式确定文件名:
String filename = System.IO.Path.GetFileNameWithoutExtension(SOME_PATH)
要创建新文件夹的路径,请使用Path.Combine
:
String targetDir = Path.Combine(SOME_ROOT_DIR,filename);
接下来,创建名称基于给定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已经向您展示了如何在文件夹中获取文件列表。