c#将文件copy到另外一个路径中,如何批量循环copy

野鼻孔 2016-08-11 12:44:03
大神们,我要我向获取E:\\Interface\\下的所有文件,然后单个移动到C:\\Interface\\下, 我想把filename和filename2做为变量轮流读。
string filename = "YellowPage_CC_20160511.xls";
求帮忙改一下,如何获取文件名,并循环copy到C:\\Interface\\下,
谢谢,代码如下


string filepath = "E:\\Interface\\";
string[] filenames = Directory.GetFiles(filepath); //获取该文件夹下面的所有文件名
int i = 0;
if (i < filenames.Length)
{
textBox1.Text = filenames[i++];
Console.WriteLine(textBox1.Text);
}

string path1 = "E:\\Interface\\";
string filename = "YellowPage_CC_20160511.xls";
string sourcePath = path1 + filename;
//string filename = Convert.ToString(p[0]) + Convert.ToString(p[1]);

//string sourcePath = @"E:\Interface\YellowPage_CC_20160511.xls";
string path2 = "C:\\Interface\\";
string filename2 = "YellowPage_CC_20160511.xls";
string destPath = path2 + filename2;

FileInfo fi1 = new FileInfo(sourcePath);
FileInfo fi2 = new FileInfo(destPath);

try
{
// Create the file and clean up handles.
using (FileStream fs = fi1.Create()) { }

//Ensure that the target does not exist.
fi2.Delete();

//Copy the file.
fi1.CopyTo(destPath);
Console.WriteLine("{0} was copied to {1}.", sourcePath, destPath);

//Try to copy it again, which should succeed.
fi1.CopyTo(destPath, true);

Console.WriteLine("The second Copy operation succeeded, which is expected.");

}
catch
{
Console.WriteLine("Double copying was not allowed, which is not expected.");
}
}
...全文
569 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
野鼻孔 2016-08-12
  • 打赏
  • 举报
回复
引用 12 楼 killdsbzero 的回复:
请参考 https://msdn.microsoft.com/zh-cn/library/c6cfw35a(v=vs.100).aspx
这个连接里的代码,是不是可以防止误删实时模式的文件。 比如说该文件夹中,每10秒有进文件,会不会误删。 cmd不行,会误删。
灰阶 2016-08-11
  • 打赏
  • 举报
回复
请参考 https://msdn.microsoft.com/zh-cn/library/c6cfw35a(v=vs.100).aspx
anythingBlank 2016-08-11
  • 打赏
  • 举报
回复
引用 10 楼 yebikong222 的回复:
[quote=引用 7 楼 shingoscar 的回复:] var p = Process.Start(...); 返回值
我太蠢了,准备辞职了。。。。[/quote] 如果遇到问题就退缩,那你干不了这行
野鼻孔 2016-08-11
  • 打赏
  • 举报
回复
引用 7 楼 shingoscar 的回复:
var p = Process.Start(...); 返回值
我太蠢了,准备辞职了。。。。
mjp1234airen4385 2016-08-11
  • 打赏
  • 举报
回复
想用这个做,你先打开一个cmd。exe,然后把copy命令执行一次,看看执行完的结果是什么。 你在dotnet里,可以捕获到这个执行结果,等执行完毕,再执行下一个命令。 或者你等待cmd。exe执行结束,就是这个WaitForExit();函数调用结束,再调用删除命令。 你把这些都放到一个线程里执行。
野鼻孔 2016-08-11
  • 打赏
  • 举报
回复
引用 6 楼 mjp1234airen4385 的回复:
[quote=引用 2 楼 yebikong222 的回复:] [quote=引用 1 楼 shingoscar 的回复:] 如果你对文件名没有变更需求,这样会更方便点
Process.Start("cmd.exe", @"/C ""xcopy /E /Y E:\Interface C:\Interface""");
我想把文件拿过来然后删除,为啥两个脚本先后跑就直接把文件删除了,不会先copy 文件。 Process.Start("cmd.exe", @"/C ""del /s/q E:\Interface\*.*""");[/quote] 虽然代码是顺序执行的。但这是单独调用cmd.exe完成,因此第一个copy的命令还没有完成,就被你第二个命令给删除了[/quote] 求办法,Process.Start("cmd.exe", @"/C ""xcopy /E /Y E:\Interface C:\Interface"""); 就没有Process xxx = new Process();没有new 就没有xxx. 没法使用xxx.exit
Poopaye 2016-08-11
  • 打赏
  • 举报
回复
var p = Process.Start(...); 返回值
mjp1234airen4385 2016-08-11
  • 打赏
  • 举报
回复
引用 2 楼 yebikong222 的回复:
[quote=引用 1 楼 shingoscar 的回复:] 如果你对文件名没有变更需求,这样会更方便点
Process.Start("cmd.exe", @"/C ""xcopy /E /Y E:\Interface C:\Interface""");
我想把文件拿过来然后删除,为啥两个脚本先后跑就直接把文件删除了,不会先copy 文件。 Process.Start("cmd.exe", @"/C ""del /s/q E:\Interface\*.*""");[/quote] 虽然代码是顺序执行的。但这是单独调用cmd.exe完成,因此第一个copy的命令还没有完成,就被你第二个命令给删除了
野鼻孔 2016-08-11
  • 打赏
  • 举报
回复
引用 4 楼 shingoscar 的回复:
不对,要加层保护
p.WaitForExit();
if(p.ExitCode == 0)
    Process.Start("cmd.exe", @"/C ""del /s/q E:\Interface\*.*""");
这个p.是哪来的,没有p啊,我直接用的Process.Start
Poopaye 2016-08-11
  • 打赏
  • 举报
回复
不对,要加层保护
p.WaitForExit();
if(p.ExitCode == 0)
    Process.Start("cmd.exe", @"/C ""del /s/q E:\Interface\*.*""");
Poopaye 2016-08-11
  • 打赏
  • 举报
回复
那你需要复制后先加一句
p.WaitForExit();
野鼻孔 2016-08-11
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
如果你对文件名没有变更需求,这样会更方便点
Process.Start("cmd.exe", @"/C ""xcopy /E /Y E:\Interface C:\Interface""");
我想把文件拿过来然后删除,为啥两个脚本先后跑就直接把文件删除了,不会先copy 文件。 Process.Start("cmd.exe", @"/C ""del /s/q E:\Interface\*.*""");
Poopaye 2016-08-11
  • 打赏
  • 举报
回复
如果你对文件名没有变更需求,这样会更方便点
Process.Start("cmd.exe", @"/C ""xcopy /E /Y E:\Interface C:\Interface""");

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧