我是直接建立的一個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 = "出租";
default:
Category = "購入";
}
//重新命名
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;
/// 業務類型
public string Category
get { return _Category; }
set { _Category = value; }
private string _Filename;
/// 檔案名
public string Filename
get { return _Filename; }
set { _Filename = value; }
private string _Client_Name;
/// 客戶名稱
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.