ファイルの時間属性を変更したい![C#]
概要
今回はRaspberry PIではなくWindowsでファイルの属性である「作成日時、更新日時、アクセス日時」を指定した日時に変更するコマンドを作成したいと思います。
事前作業
①デスクトップにVisual Studio communityバージョンをインストールします。
ダウンロードサイト(★コミュニティ★)
https://visualstudio.microsoft.com/ja/downloads/
②インストールオプションはすべてインストールも良いですが、アプリ開発をしないなら関連パッケージはインストールしない方がよいです。
プログラム内容
コマンドは基本的にパラメータを何も指定しない場合はコマンドの使い方のHELP内容が表示されるようにします。
①ファイル情報を確認したい場合、下記のコマンドで確認します。
例)finfo filename
②ファイル情報の「作成日時、更新日時、アクセス日時」を変更したい場合、下記のコマンドで確認します。
例)finfo filename "作成日時"
※作成日時が「更新日時、アクセス日時」に設定されます。
例)finfo filename "作成日時" "更新日時"
※作成日時、更新日時が該当属性に更新されます。アクセス日時には「更新日時」が設定されます。
プログラムソース
下記のソースを「Windowsのコンソールアプリケーション(.Net Framework)」プロジェクトから作成します。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace finfo
{
class Program
{
static void Main(string[] args)
{
//ファイル属性変更は最大3個の引数
if (args.Length >= 2)
{
fileEdit(args);
}
else if (args.Length == 1&& args[0] != "-h")
{
fileInfo(args[0]);
}
else
{
help();
}
}
public static void help()
{
Console.WriteLine("=======================================");
Console.WriteLine("使い方");
Console.WriteLine("=======================================");
Console.WriteLine("①ファイル情報出力の指定方");
Console.WriteLine("例)finfo filename");
Console.WriteLine("②ファイル情報出力の指定方");
Console.WriteLine("例)finfo filename \"YYYY-MM-DD HH:MM:SS\"");
Console.WriteLine("例)finfo filename \"YYYY-MM-DD HH:MM:SS\" \"YYYY-MM-DD HH:MM:SS\"");
Console.WriteLine("=======================================");
}
public static void fileInfo(string file)
{
if (!File.Exists(file))
{
Console.WriteLine("指定したファイルは現在のフォルダに存在しません。");
return;
}
var info = new FileInfo(file);
Console.WriteLine("=======================================");
Console.WriteLine("ファイル情報");
Console.WriteLine("=======================================");
Console.WriteLine("ファイル名 : " + info.Name);
Console.WriteLine("ファイルパス : " + info.FullName);
Console.WriteLine("作成日時 : " + info.CreationTime);
Console.WriteLine("更新日時 : " + info.LastWriteTime);
Console.WriteLine("サイズ : " + info.Length + " Bytes");
Console.WriteLine("アクセス日時 : " + info.LastAccessTime);
Console.WriteLine("=======================================");
}
public static void fileEdit(string[] args)
{
DateTime createTime;
DateTime writeTime;
string file = "./" + args[0];
if (!File.Exists(file))
{
Console.WriteLine("指定したファイルは現在のフォルダに存在しません。");
return;
}
//時間を設定
if (args.Length == 3)
{
createTime = Convert.ToDateTime(args[1]);
writeTime = Convert.ToDateTime(args[2]);
}
else
{
createTime = Convert.ToDateTime(args[1]);
writeTime = Convert.ToDateTime(args[1]);
}
var info = new FileInfo(file);
//作成日時と更新日時を別々指定したい場合
if (createTime != null && writeTime != null)
{
File.SetCreationTime(file, createTime);
File.SetLastWriteTime(file, writeTime);
File.SetLastAccessTime(file, writeTime);
}
//作成日時と更新日時を同じ日時に指定したい場合
else
{
File.SetCreationTime(file, createTime);
File.SetLastWriteTime(file, createTime);
File.SetLastAccessTime(file, createTime);
}
Console.WriteLine("=======================================");
Console.WriteLine("ファイル更新情報");
Console.WriteLine("=======================================");
Console.WriteLine("ファイル名 : " + info.Name);
Console.WriteLine("ファイルパス : " + info.FullName);
Console.WriteLine("作成日時 : " + info.CreationTime);
Console.WriteLine("更新日時 : " + info.LastWriteTime);
Console.WriteLine("サイズ : " + info.Length + " Bytes");
Console.WriteLine("アクセス日時 : " + info.LastAccessTime);
Console.WriteLine("=======================================");
}
}
}
実行結果
下記の内容通りに動作することを確認しました。
C:\work\finfo\finfo\bin\Release>finfo.exe Program.cs
=======================================
ファイル情報
=======================================
ファイル名 : Program.cs
ファイルパス : C:\work\finfo\finfo\bin\Release\Program.cs
作成日時 : 2021/05/02 3:24:02
更新日時 : 2021/05/02 3:22:55
サイズ : 4681 Bytes
アクセス日時 : 2021/05/02 3:24:03
=======================================
C:\work\finfo\finfo\bin\Release>finfo.exe Program.cs "2021/05/02 23:58:02"
=======================================
ファイル更新情報
=======================================
ファイル名 : Program.cs
ファイルパス : C:\work\finfo\finfo\bin\Release\Program.cs
作成日時 : 2021/05/02 23:58:02
更新日時 : 2021/05/02 23:58:02
サイズ : 4681 Bytes
アクセス日時 : 2021/05/02 23:58:02
=======================================
C:\work\finfo\finfo\bin\Release>finfo.exe Program.cs "2021/05/02 23:58:02" "2021/05/02 23:59:32"
=======================================
ファイル更新情報
=======================================
ファイル名 : Program.cs
ファイルパス : C:\work\finfo\finfo\bin\Release\Program.cs
作成日時 : 2021/05/02 23:58:02
更新日時 : 2021/05/02 23:59:32
サイズ : 4681 Bytes
アクセス日時 : 2021/05/02 23:59:32
=======================================
終わりに
これでファイルの属性を変更することができます。
どんなファイルも属性変更が可能です。
エクセルファイルまたは実行ファイルなども可能です。
(^^)//
Author And Source
この問題について(ファイルの時間属性を変更したい![C#]), 我々は、より多くの情報をここで見つけました https://qiita.com/neomi/items/ed2f5993f5736ad3f757著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .