999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C#語言的電子文件名批量處理及在歸檔管理中的應(yīng)用

2021-03-22 02:56:46魏自鵬
電腦知識與技術(shù) 2021年6期
關(guān)鍵詞:語言

魏自鵬

摘要:針對電子文件向檔案數(shù)據(jù)庫歸檔環(huán)節(jié),往往需要大量更改文件名的問題,文章梳理了如何借助C#語言編寫相應(yīng)的桌面應(yīng)用程序,以實現(xiàn)文件名的批量更改和電子文件的順利入庫,從而打通電子文件向檔案數(shù)據(jù)庫轉(zhuǎn)入的“最后一公里”,切實提高工作效率,節(jié)省人力資源。

關(guān)鍵詞:C#語言;電子文件;批量處理;更名;歸檔

中圖分類號:G270.7? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)06-0083-03

Abstract: In view of the problem that a large number of file names need to be changed in the process of filing electronic documents into archives database, this paper combs out how to write corresponding desktop application programs with the help of C# language, so as to realize batch change of file names and smooth storage of electronic documents, so as to get through the "last kilometer" of electronic documents transferred to archives database, effectively improve work efficiency and save manpower resources.

Key words: C# language; electronic documents; batch processing; rename; filing

隨著計算機技術(shù)的普及應(yīng)用以及檔案信息化、數(shù)字化的不斷推進,電子文件(包括紙質(zhì)檔案數(shù)字化副本)大量產(chǎn)生,其分類整理、數(shù)據(jù)掛接入庫等已成為常態(tài)化工作[1]。然而,工作中電子文件名多數(shù)不規(guī)范或不符合要求,需要重新修改,以便更快捷地掛接入庫。面對大量的電子文件名更改工作,如能實現(xiàn)批量自動處理,將能大幅度提高工作效率和準確性。為此,本文通過對檔案工作實踐和流程的深入思考,探討如何利用C#編程語言編寫相應(yīng)桌面應(yīng)用程序以實現(xiàn)電子文件名批量更改和歸檔入庫。

1 設(shè)計概述

電子文件名批量處理常用功能包括替換、刪除、添加前后綴、提取、截取、整體更改等。總體思路是通過遍歷文件夾中的所有電子文件,然后提取電子文件名并轉(zhuǎn)化為字符串,通過對字符串的修改處理,最后再對文件重新命名。這些功能可以集成簡單的Windows桌面應(yīng)用程序工具。

2 代碼實現(xiàn)

電子文件名批量處理功能的代碼實現(xiàn)主要運用String、StringBuilder、File、FileInfo、Directory和DirectoryInfo類以及C#與EXCEL表的互操作[2-3]。

2.1 文件名批量替換

本功能可以實現(xiàn)文件名字符的批量替換,如將“【2019】”全部替換為“〔2020〕”。為便于說明問題,先做一個簡單的桌面應(yīng)用實例(圖1),主要代碼如下:

[? ? ? ? private void btnSelect_Click(object sender, EventArgs e)

{

//選擇文件夾

FolderBrowserDialog folderPath = new FolderBrowserDialog();

if (folderPath.ShowDialog() == DialogResult.OK)

{

this.textBoxFolder.Text = folderPath.SelectedPath;

}

}

private void btnBegin_Click(object sender, EventArgs e)

{

DirectoryInfo directoryInfo = new DirectoryInfo(textBoxFolder.Text);

foreach (FileInfo file in directoryInfo.GetFiles())

{

String strb = file.Name;

strb = strb.Replace(textBoxSource.Text, textBoxReplace.Text);

Boolean boolean = true;

if (file.Name.Equals(strb))

boolean = false;//目的是區(qū)分文件名中字符的大小寫,比如將大寫Y改為小寫y,因為Windows中文件名是不區(qū)分大小寫的;

if (boolean)

file.MoveTo(@textBoxFolder.Text + "\\" + strb);

}

} ]

本實例能夠?qū)崿F(xiàn)文件夾中文件名的批量替換功能,并區(qū)分字符的大小寫。為簡明起見,本文所列實例只給出主要代碼,省去名稱空間、類庫的引用以及異常處理等,僅供參考。

2.2 添加文件名前、后綴

本功能可實現(xiàn)在文件名前面或后面添加相應(yīng)字符,也可根據(jù)需要添加遞增數(shù)字,如在添加固定前綴“WS.2020-”后自動添加4位數(shù)遞增數(shù)字“0001-n”,其簡單桌面式樣如圖2所示。

1)添加固定前綴的主要代碼

[foreach (FileInfo file in directoryInfo.GetFiles())

{

StringBuilder strb = new StringBuilder(file.Name);

strb.Insert(0, textBoxPrefix.Text.ToString());

file.MoveTo(@textBoxFolder.Text + "\\" + strb);

} ]

2)添加遞增前綴的主要代碼

[private void SortAsFileName(ref FileInfo[] arrFiles)

{

Array.Sort(arrFiles, delegate (FileInfo x, FileInfo y) { return x.Name.CompareTo(y.Name); });

}

DirectoryInfo directoryInfo = new DirectoryInfo(textBoxFolder.Text);

int i = 0;

try

{

i = Convert.ToInt32(textBoxSuffix.Text);

}

catch (Exception)

{

MessageBox.Show("輸入格式不正確,默認從0開始!");

}

FileInfo[] arrFiles = directoryInfo.GetFiles();

SortAsFileName(ref arrFiles);//按照文件名稱進行排序,也可根據(jù)需要按照其他方式排序;

foreach (FileInfo file in arrFiles)

{

StringBuilder strb = new StringBuilder(file.Name);

int length = textBoxPrefix.Text.ToString().Length;

strb.Insert(length, String.Format("{0:D4}", i++));//保留4位有效數(shù)字,不足部分補零;

file.MoveTo(@textBoxFolder.Text + "\\" + strb);

} ]

添加后綴功能與前綴類似,不再贅述。

2.3 文件名批量截取

本功能主要實現(xiàn)將文件名中的部分字符截取并保留下來作為文件名(當(dāng)然,同一文件夾中截取后的文件名不能重復(fù)),根據(jù)需要可設(shè)置截取的首尾字符或截取的起始字符位置數(shù)和保存長度(圖3),如從第2個字符開始,截取6個字符,然后將文件名改為截取后的字符串名。主要代碼如下:

[foreach (FileInfo file in directoryInfo.GetFiles())

{

string strb = file.Name;

int index1 = int.Parse(textBoxStart.Text);

int index2 = int.Parse(textBoxLength.Text);

int index3 = strb.LastIndexOf(".");

string str1 = strb.Substring(index1 - 1, index2);

string str2 = strb.Substring(index3);

StringBuilder strCombine = new StringBuilder(str1);

strCombine.Append(str2);

file.MoveTo(@textBoxFolder.Text + "\\" + strCombine.ToString());

} ]

2.4 文件名提取及與EXCEL表的互操作

本功能可實現(xiàn)將文件夾中的文件名提取出來然后導(dǎo)入EXCEL表中的某一列(如第1列,設(shè)為“原文件名”列),然后再在EXCEL表中的某一列(如第5列,設(shè)為“新文件名”列)對應(yīng)行位置輸入要更改的文件名,之后再將文件夾中的文件名(“原文件名”列)更改為新的文件名(“新文件名”列),這樣可以利用EXCEL表實現(xiàn)文件名的提取和任意修改[4]。其主要代碼如下:

1)文件名提取并導(dǎo)入EXCEL表

[string filePath = @"D:\ myExcel.xlsx";//設(shè)置要導(dǎo)入的EXCEL表保存路徑

dynamic appExcel = new Application();

appExcel.DisplayAlerts = false;

appExcel.Visible = true;

dynamic excelDoc = appExcel.Workbooks.Add(true);

dynamic worksheet1 = excelDoc.Sheets[1];

worksheet1.Cells[1, "a"] = "原文件名";

worksheet1.Cells[1, "e"] = "新文件名";

int count = 1;

FileInfo[] arrFiles = directoryInfo.GetFiles();

SortAsFileName(ref arrFiles);

foreach (FileInfo file in arrFiles)

{

count++;

worksheet1.Cells[count, "a"] = file.Name;

}

excelDoc.SaveAs(filePath); ]

2) 根據(jù)EXCEL表中“新文件名”列的內(nèi)容修改文件名

[dynamic excelDoc = appExcel.Workbooks.Open(filePath);

dynamic worksheet1 = excelDoc.Sheets[1];

foreach (FileInfo file in directoryInfo.GetFiles())

{

string strb = file.Name;

int index = strb.LastIndexOf(".");

string str1 = strb.Substring(0, index);

string str2;

for (int i = 2; i <= directoryInfo.GetFiles().Length + 1; i++)

{

if (worksheet1.Cells[i, "e"].value == null||worksheet1.Cells[i, "e"].value.ToString() == ""? )

continue;

if (strb.Equals(worksheet1.Cells[i, "a"].value.ToString()))

{

str2 = worksheet1.Cells[i, "e"].value.ToString();

strb = strb.Replace(str1, str2);

}

}

file.MoveTo(@textBoxFolder.Text + "\\" + strb);

} ]

3 實際應(yīng)用

上述功能可大量應(yīng)用于電子文件、數(shù)字化檔案副本等向檔案系統(tǒng)數(shù)據(jù)庫掛接歸檔過程中。通常情況下,檔案數(shù)據(jù)庫在掛接電子文件時是按照“檔號”“文號”“題名”等字段進行批量掛接的,然而日常工作中形成的電子文件名往往與數(shù)據(jù)庫中的字段不一致,且多數(shù)不夠統(tǒng)一規(guī)范,甚至無序,這就需要對電子文件名進行重新修改和調(diào)整,以便能夠批量掛接入庫。如某文件夾下一些電子文件(圖4),欲批量修改為遞增“檔號”,可先添加固定前綴 “Z119-WS.2020-BGS-Y-”[5],再添加遞增起始數(shù)字“1”,然后再運用截取功能從首字符開始截取23個字符即可實現(xiàn)按“檔號”重新命名(圖5),以實現(xiàn)電子文件按“檔號”自動掛接進入檔案數(shù)據(jù)庫。該示例也可運用文件名提取功能,先提取出電子文件名保存至EXCEL表中第1列(圖6),再根據(jù)需要在第5列中填充要修改的新文件名(圖7),最后通過程序也能實現(xiàn)批量更名目的(圖5)。

4 結(jié)束語

本文所有代碼都在Visual Studio 2019中進行了成功調(diào)試,并經(jīng)過大量實際工作的驗證,在檔案數(shù)字化加工、電子文件掛接入庫中具有較多應(yīng)用,較好地打通了電子文件向數(shù)據(jù)庫歸檔的“最后一公里”,實現(xiàn)電子文件歸檔的全程加速,并以客觀標準代替主觀操作,能夠切實提高工作效率和準確性,節(jié)省大量人力資源。日常工作中,檔案工作者應(yīng)積極嘗試運用計算機等先進技術(shù),深入思考檔案工作流程,創(chuàng)新工作方法,努力減少重復(fù)繁雜的工作,不斷提高檔案工作的自動化和智能化水平。

參考文獻:

[1] 龐海濤.檔案數(shù)字化前處理工作概論[M].北京:中國文史出版社,2018.

[2] Benjamin Perkins,Jacob Vibe Hammer,Jon D Reid.C#入門經(jīng)典[M].北京:清華大學(xué)出版社,2016.

[3] 向燕飛.C#程序設(shè)計案例教程[M].北京:清華大學(xué)出版社,2018.

[4] 軟件開發(fā)技術(shù)聯(lián)盟.C#開發(fā)實例大全-提高卷[M].北京:清華大學(xué)出版社,2016.

[5] 李明華.歸檔文件整理規(guī)則解讀[M].北京:中國文史出版社,2016.

【通聯(lián)編輯:謝媛媛】

猜你喜歡
語言
詩之新,以語言創(chuàng)造為基
中華詩詞(2023年8期)2023-02-06 08:51:28
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態(tài)分析下的同聲傳譯語言壓縮
日常語言與播音語言
新聞傳播(2016年10期)2016-09-26 12:15:04
語言技能退化與語言瀕危
我有我語言
論語言的“得體”
語文知識(2014年10期)2014-02-28 22:00:56
Only Words慎用你的語言
主站蜘蛛池模板: AV网站中文| 91精品国产91久久久久久三级| 国产婬乱a一级毛片多女| 欧美色图久久| 亚洲Av综合日韩精品久久久| 国产第三区| 久久久久久尹人网香蕉| 99久久国产综合精品女同| 在线看片国产| 亚洲人成网址| 亚洲天堂成人在线观看| a天堂视频| 国产无套粉嫩白浆| 欧美一区二区丝袜高跟鞋| 狂欢视频在线观看不卡| 亚洲精品无码在线播放网站| 狠狠综合久久| 久久精品视频亚洲| 亚洲综合经典在线一区二区| 亚洲人成电影在线播放| 国产免费久久精品99re丫丫一| 久久精品这里只有精99品| 国产在线八区| 天天躁夜夜躁狠狠躁图片| 亚洲天堂精品视频| 久久免费观看视频| 免费高清毛片| 色悠久久综合| 99re视频在线| 在线欧美日韩国产| 中文字幕乱码二三区免费| 久久久精品国产SM调教网站| 四虎在线观看视频高清无码| 潮喷在线无码白浆| 在线a网站| 欧美色香蕉| 又猛又黄又爽无遮挡的视频网站| 亚洲中文字幕23页在线| 天堂va亚洲va欧美va国产| 国产精品人莉莉成在线播放| 漂亮人妻被中出中文字幕久久| 国产9191精品免费观看| 免费毛片a| 人妻丰满熟妇AV无码区| 亚洲精品无码抽插日韩| 99热这里只有精品国产99| 91亚瑟视频| 激情综合网激情综合| 色综合日本| 精品一区二区无码av| 波多野结衣视频网站| 欧美日韩久久综合| 久久综合五月婷婷| 一本久道久久综合多人| 国产精品视频猛进猛出| 国产亚洲精久久久久久无码AV| 久久人人97超碰人人澡爱香蕉| 又爽又大又黄a级毛片在线视频| 国产拍在线| 亚洲伊人电影| 在线色国产| 亚洲国产欧洲精品路线久久| 欧美国产综合视频| 四虎国产成人免费观看| 日韩少妇激情一区二区| 色国产视频| 在线欧美a| 91精品人妻一区二区| 色婷婷综合激情视频免费看| 日本一本在线视频| 国产91精品久久| 青青草原国产一区二区| 色婷婷在线播放| 色天堂无毒不卡| 国产麻豆精品久久一二三| 亚洲欧美成人综合| 欧美在线视频不卡第一页| 久久国产精品无码hdav| www.91在线播放| 国产成本人片免费a∨短片| 亚洲第一极品精品无码| 国产性爱网站|