簡體   English   中英

循環更改文件名c#

[英]change file name c# with a loop

我必須更改某些pd​​fs(1,2 TB)的名稱。 文件的名稱例如是20160112_0(年/月/日/ _0)。 我必須將文件名更改為tu,即2016年1月12日(工作日/日/月/年)。

我已經准備好了文件名,但我不知道如何正確更改它。

string dir = @"path";
        string[] files = Directory.GetFiles(dir);
        foreach (string file in files)
            Console.WriteLine(Path.GetFileName(file));

嘗試這個

        string dir = @"YourPath";
        string fileDate, new_fileDate;
        DateTime dt;
        foreach (string original_filename in Directory.GetFiles(dir))
        {
            fileDate = Path.GetFileName(original_filename).Substring(0, 8);
            dt = DateTime.ParseExact(fileDate, "yyyyMMdd", CultureInfo.InvariantCulture);
            new_fileDate = dt.ToString("ddd_dd_MMMM_yyyy");
            File.Move(original_filename, original_filename.Replace(fileDate, new_fileDate));
        }
//from your code: 
DateTime fileDate;
var newFileName = newFileName(Path.GetFileName(file), out fileDate);
File.Move(newFileName);


string newFileName(string oldFileName, out DateTime fileDate)
    {

        var fileDate =  DateTime.ParseExact(oldFileName.Take(8),
                                            "yyyyMMdd",
                                            CultureInfo.InvariantCulture,
                                            DateTimeStyles.None) ;

    var nfn = fileDate.Day.ToString() + "." + fileDay.Month.ToString("MMM") + fileDay.Year.ToString("YYYY") + ".pdf";

    return nfn;

    }
    string path = @"path";
    System.IO.DirectoryInfo dir = System.IO.DirectoryInfo(path);
    foreach System.IO.FileInfo file in dir.GetFiles()){
        string newname = GetNewName(file.Name);
if(newname!=file.Name)
        file.Move(file.FullName,  System.IO.Path.Combine(file.DiretoryName, newname);
    }

    public string GetNewName(string f){
       string without_ext = f.split('.').First();
    string result = f;
       Match m = Regex.Match(without_ext, "(\\d{4})(\\d[012]?)(\\d[0123]?\\d)")
        if(m.Success){
           result = $"{m.Groups[3].Value}.{CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(int.Parse(m.Groups[2].Value)} {m.Groups[1].Value).{f.split('.').Last()}}; 
       }
       return result;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM