C# 批量复制文件

前言
    项目之外,公司要求把客户上传的xls数据文件按条件拷贝一份出来,可是这些上传的文件都已经重新命过名,不过还好有上传的记录,包括文件新命名的规则.于是只需要写一个程序来批量获得这些被重新命过名的文件然后拷贝出来就行了.

正题
    我是直接新建的一个aspx并在后台代码里写的,帖cs代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.SqlClient;

public partial class page_FilesAsEasy : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ArrayList arr = new ArrayList();
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = @"Data Source=.\;Initial Catalog=test;User ID=test;Password=test";
        conn.Open();
        string sqlcmd;
        sqlcmd = @"select * from test";
        SqlCommand cmd = new SqlCommand(sqlcmd, conn);
        SqlDataReader sdr = cmd.ExecuteReader();
        while (sdr.Read())
        {
            FileVO vo = new FileVO();
            vo.Client_Name = sdr["clientname"].ToString();
            vo.Client_ID = sdr["linkshop"].ToString();
            vo.Category = sdr["category"].ToString();
            vo.Filename = sdr["filename"].ToString();
            arr.Add(vo);
        }
        sdr.Close();
        conn.Dispose();

        Response.Write("开始拷贝文件..<br/><br/>");
        Response.Flush();

        foreach (object var in arr)
        {
            try
            {
                FileVO item = (FileVO)var;
                //这是经过重新命名的文件的path
                string from = @"E:\files\" + item.Client_ID.Trim() + "_" + item.Category.Trim() + "_" + item.Filename.Trim() + ".xls";
                string Category = string.Empty;
                switch (item.Category)
                {
                    case "1":
                        Category = "出售";
                        break;
                    case "2":
                        Category = "出租";
                        break;
                    default:
                        Category = "购入";
                        break;
                }
                //重新命名
                string to = @"F:\xlsdata\" + item.Client_Name.Trim() + "_" + Category.Trim() + ".xls";
                //拷贝文件
                File.Copy(from, to, true);
                //设置文件属性
                File.SetAttributes(to, FileAttributes.Normal);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message + "<br/>");
                return;
            }
        }
        Response.Write("<br/>拷贝文件结束..");
    }
    class FileVO
    {
        private string _Client_ID;
        /// <summary>
        /// 客户代号
        /// </summary>
        public string Client_ID
        {
            get { return _Client_ID; }
            set { _Client_ID = value; }
        }

        private string _Category;
        /// <summary>
        /// 业务类型
        /// </summary>
        public string Category
        {
            get { return _Category; }
            set { _Category = value; }
        }

        private string _Filename;
        /// <summary>
        /// 文件名
        /// </summary>
        public string Filename
        {
            get { return _Filename; }
            set { _Filename = value; }
        }

        private string _Client_Name;
        /// <summary>
        /// 客户名称
        /// </summary>
        public string Client_Name
        {
            get { return _Client_Name; }
            set { _Client_Name = value; }
        }
    }
}

注意:
    这里最关键是以下两句代码:

//拷贝文件
File.Copy(from, to, true);
//设置文件属性
File.SetAttributes(to, FileAttributes.Normal);

特别是第二句,我花了许多时间才找到的,如果你不加这句话,那会报以下错误:

The process cannot access the file 'F:\xlsdata\xxx_xxx.xls' because it is being used by another process.

OK!!批量重命名复制成功!

转载:http://www.cnblogs.com/over140/archive/2007/12/07/986326.html

时间: 2024-08-07 16:02:54

C# 批量复制文件的相关文章

ios-从xib文件中使用批量复制

问题描述 从xib文件中使用批量复制 使用xib创建视图,条件是: 有批量UIView IBoutlet的对象 IBOutlet UIView *viewOpenDoor; IBOutlet UIView *viewOpenDoor_Second; viewOpenDoor 是唯一连接到xib中一个视图.现在我使用下面的代码在Viewdidload方法中重新用同样的视图: [viewOpenDoor setFrame:CGRectMake(30, 80, viewOpenDoor.frame.s

for-想将C盘所有图片用 vbs 批量复制到手机ftp action文件夹入面

问题描述 想将C盘所有图片用 vbs 批量复制到手机ftp action文件夹入面 想将C盘所有图片用 vbs 批量复制到手机ftp action文件夹入面 我小米手机ftp:192.168.1.101:2121 没有密码 set ws=createobject("wscript.shell") on error resume next ws.run "cmd /c for /r c: %a in (*.jpg) do copy %a ftp://192.168.1.101:

巧用Excel快速批量创建文件夹

由于工作需要,经常要来创建一些人名的文件夹,一个一个创建非常麻烦,其实我们可以通过Excel来批量创建文件夹. 第一步.首先打开Excel创建一个新的工作表,在表格中的A列输入"md "(后面有个空格),B列输入要创建的文件夹 的路径,C列输入文件夹的名称,这里可以通过手动或者复制粘贴来输入人名. 第二步.在D列输入 "=A1&B1&C1",再拉单元格右下角的锚点,使其下面的表格自动填充. 第三步.创建一 个文本文件,把D列的内容复制到文本文件里,并

SQL批量复制命令的六个陷阱

批量复制工具(BCP)是SQL Server主要的命令行工具之一,使用非常方便, 它也是SQL Server导入导出海量数据的方式.但是DBA应注意BCP存在几项限制, 本文作者通过自身经历总结了一些主要的问题表现. 1.没有对UTF-8的支 持 SQL Server有对Unicode的本地支持,使用过nvarchar和ntext字段类型 的任何人都知道.它通过映射每个字符为双字节实体来内部处理Unicode.如果你 只是处理SQL Server实例之间的数据,那么不会有任何问题,因为它们都以相

Excel+记事本批量新建文件夹

  有时候我们需要根据一堆人名或者身份证号批量新建文件夹或者文件,本节教程均适用.原理,利用Excel的基本功能批量生成CMD命令,然后粘贴保存到bat文件中,双击执行即可. 1.打开excel表格: 2.在2B单元格输入:="MD "&A2 熟悉MD命令的都知道这个命令是新建文件夹的命令. 3.选中2B单元格,向下拖拉复制至最后一行: 这样就得到了很多个MD命令. 4.将上图中B列中的内容全部复制到记事本中: 5.将记事本保存后,改扩展名为bat: 6.改完后双击执行即可.试

如何快速实现批量建立文件夹

  如何我们想批量建立很多文件夹怎么办呢,下面以批量建立以姓名为名称的文件夹给大家介绍批量建立文件夹的办法. 方法/步骤 A.如果姓名在Excel表中数列显示,可以将姓名选中复制. B.然后再新建一个表,在里面"选择性粘贴",选择"转置",这样就变成横行显示了. C.保存文件:"文件"-"另存为",在文件类型中选择"文本文件(制表符分隔)(*.txt)",命好文件名.选好位置,点击"保存"

nodejs批量修改文件编码格式_node.js

摘要: 最近在制作手册的时候遇到了一个问题'文档乱码',查看文件之后发现文件编码不对,总共100多个文件,如果用编辑器另存为utf8,那就悲催了.所以自己就写了个程序,批量修改文件编码格式. 代码: 复制代码 代码如下: /**  * 修改文件编码格式,例如:GBK转UTF8  * 支持多级目录  * @param {String} [root_path] [需要进行转码的文件路径]  * @param {Array}  [file_type] [需要进行转码的文件格式,比如html文件]  *

BAT批量去除文件首行以及批量合并文件脚本_DOS/BAT

bat批量去除文件首行 复制代码 代码如下: set n=1 :starline for %%j in (*.txt) do ( :3 if exist D:\work\test\new_%n%.txt (set /a n+=1&goto 3) set file=%n%.txt for /f "skip=1 delims=" %%i in ('type "%file%"') do ( echo %%i >>D:\work\test\new_%n%

bat批处理批量修改文件扩展名的方法_DOS/BAT

有的时候我们可能会遇到,在一个文件夹内有很多个文件,我们需要修改这些文件的扩展名,当然我们可以一个一个的修改,可是如果有很多文件,那就很麻烦了,所以今天就教大家批量修改文件扩展名的方法,希望大家能够灵活运用. 这里假设你要把扩展名为.gif的文件都改成.jpg格式,那么具体方法如下: 1.首先进入需要改扩展名的文件夹内新建一个记事本 2.在记事本中输入如下内容 复制代码 代码如下: ren *.gif *.jpg 3.将记事本的扩展名改名为.bat 4.双击运行bat文件即可批量将该文件夹下的所