ヘッダー
C# サンプル集
 

ファイルやフォルダーの名前を変更する

2020/10/11

→ Visual Basic のサンプルに切り替える

 

ファイルの名前を変更する


System.IO.File.Move(@"C:\FileTest\FolderA\test.txt", @"C:\FileTest\FolderA\NEWNAME.txt");

奇妙に見えるかもしれませんが、名前を変更するには Move メソッドを使用します。

 

これでもできます。

var file = new System.IO.FileInfo(@"C:\FileTest\FolderA\test.txt");
file.MoveTo(@"C:\FileTest\FolderA\NEWNAME.txt");

 

 

フォルダーの名前を変更する


System.IO.Directory.Move(@"C:\FileTest\FolderA", @"C:\FileTest\NEW-FOLDER-NAME");

奇妙に見えるかもしれませんが、名前を変更するには Move メソッドを使用します。

 

これでもできます。

var folder = new System.IO.DirectoryInfo(@"C:\FileTest\FolderA");
folder.MoveTo(@"C:\FileTest\NEW-FOLDER-NAME");

 

 

すべてのcsvファイルの名前の末尾に作成日時を _20240627130512 のように付ける

この例は、サブフォルダー(子フォルダー)内は対象にしません。

この例ではたとえば、test.csv → test_20240627130512.csv のようにリネームします。(作成日時が2024年6月27日 13時5分12秒の場合)

csvファイルはワイルドカードで *.csv として指定しているのでここを変更すると他のファイルも対象にできます。

string folderFullName = @"C:\FileTest\FolderA"; //対象のフォルダー
string filePattern = "*.csv"; //対象の拡張子

//サブフォルダーも対象にする場合、第3引数に SearchOption.AllDirectories を指定します。
//foreach(string fileFullName in System.IO.Directory.GetFiles(folderFullName, filePattern)) //←.NET Framework 3.5以前の場合
foreach (string fileFullName in System.IO.Directory.EnumerateFiles(folderFullName, filePattern))
{
    //拡張子なしのファイル名を取得
    string fileNameFromWithoutExt = System.IO.Path.GetFileNameWithoutExtension(fileFullName);

    //拡張子を取得
    string ext = System.IO.Path.GetExtension(fileFullName);

    //作成日時を取得
    DateTime creationTime = System.IO.File.GetCreationTime(fileFullName);

    //新しいファイル名を生成
    //string newFileName = fileNameFromWithoutExt + "_" + creationTime.ToString("yyyyMMddHHmmss") + ext; //←C# 5.0(VS2013)以前の場合
    string newFileName = $"{fileNameFromWithoutExt}_{creationTime:yyyyMMddHHmmss}{ext}";
    string newFileFullName = System.IO.Path.GetDirectoryName(fileFullName) + "\\" + newFileName;

    //名前変更を実行
    System.Diagnostics.Debug.WriteLine("名前変更 " + fileFullName + " → " + newFileName);
    System.IO.File.Move(fileFullName, newFileFullName);
}

Debug.WriteLineが表示される場所