Bij*_*mas 10 c# windows copy file robocopy
我正在创建一个文件复制程序,它将使用ROBOCOPY命令复制大小约为50 KB的大量文件(~100,000).
对于每个文件,我创建一个新进程并传递ROBOCOPY命令和参数如下:
using (Process p = new Process)
{
p.StartInfo.Arguments = string.Format("/C ROBOCOPY {0} {1} {2}",
sourceDir, destinationDir, fileName);
p.StartInfo.FileName = "CMD.EXE";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种更好的方法,而不是为每个文件创建一个流程,这在性能和设计方面都很好.有人可以提出更好的方法吗?
tjs*_*nce 14
这个问题有点陈旧,但我想我会回答帮助那些仍然落在它上面的人.我写了一个名为RoboSharp的图书馆(https://github.com/tjscience/RoboSharp),它将Robocopy的所有优点带给了c#.看看你是否需要在c#中使用Robocopy的强大功能.
小智 5
Process p = new Process();
p.StartInfo.Arguments = string.Format("/C Robocopy /S {0} {1}", "C:\\source", "C:\\destination");
p.StartInfo.FileName = "CMD.EXE";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
/C Robocopy -> this is a command to run robocopy
/S -> This will help to copy sub folders as well as Files
Run Code Online (Sandbox Code Playgroud)
小智 2
我只会使用 System.IO。应该足够快,并且您的文件名可以是通配符。
using System.IO;
// snip your code... providing fileName, sourceDir, destinationDir
DirectoryInfo dirInfo = new DirectoryInfo(sourceDir);
FileInfo[] fileInfos = dirInfo.GetFiles(fileName);
foreach (FileInfo file in fileInfos)
{
File.Copy(file.FullName, Path.Combine(destinationDir, file.Name), true); // overwrites existing
}
Run Code Online (Sandbox Code Playgroud)