[英]C# change file name on DOS wildcards
我們有一個.net程序,該程序實際上將文件從一個文件夾復制到另一個文件夾,並且通常在復制過程中更改文件的名稱。 客戶使用DOS樣式通配符提供要復制的文件名和目標文件名。
例如:
來源:*。log目標:*。txt
將aa.log復制到aa.txt,將bb2.1.log復制到bb2.1.txt等
要么
來源:abc * .csv目標:KK * _123.csv
將abcxyz.csv復制到KKabcxyz_123.csv,abc1722.mm.csv復制到KKabc1722.mm_123.csv
如何在C#或VB.net中實現這種復制/重命名?
File.Copy(SourceFile, TargetFile )
在文件名中不支持通配符(* ,?),因此可能的問題是,如何生成目標文件名?
PS:如果絕對必要,我可以對源/目標文件名實施一些限制,但我想避免這樣做。
PPS如有必要,可以將過程分為單獨的部分。 Example#2:來源:abc * .csv目標:KK * _123.csv
可以替換為
來源:abc * .csv目標:KK * .csv
和來源:KK * .csv目標:* _ 123.csv
。
我不知道一個完全內置的解決方案,但是.NET將為您進行模式匹配。 Directory.EnumerateFiles(string,string)接受一種模式來匹配源文件。 你可以做類似的事情
foreach (var sourceFile in Directory.EnumerateFiles(myPath, thePattern))
{
var targetFile = ApplyPattern(sourceFile, thePattern);
File.Copy(sourceFile, targetFile);
}
您需要通過檢查EnumerateFiles找到的sourceFile並應用占位符邏輯來自己實現ApplyPattern。
也許有一個我不知道的更好的解決方案。 如果不是,則至少將為您處理匹配的源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.