파일의 시간 속성을 변경하고 싶습니다! [C#]
개요
이번에는 Raspberry PI가 아니라 Windows에서 파일의 속성인 「작성일시, 갱신일시, 액세스일시」를 지정한 일시에 변경하는 커멘드를 작성하고 싶습니다.
사전 작업
① 데스크톱에 Visual Studio 커뮤니티 버전을 설치합니다.
다운로드 사이트(★커뮤니티★)
h tps://ゔぃすあ lsつぢ오. 미 c 로소 ft. 코 m / 그럼 / 도 w 응 아 ds /
②설치 옵션은 모두 설치도 좋지만, 앱 개발을 하지 않으면 관련 패키지는 설치하지 않는 것이 좋다.
프로그램 내용
명령은 기본적으로 파라미터를 아무것도 지정하지 않으면 명령 사용법의 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
=======================================
끝에
이제 파일의 속성을 변경할 수 있습니다.
어떤 파일도 속성 변경이 가능합니다.
엑셀 파일이나 실행 파일 등도 가능합니다.
(^^)//
Reference
이 문제에 관하여(파일의 시간 속성을 변경하고 싶습니다! [C#]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neomi/items/ed2f5993f5736ad3f757
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
① 데스크톱에 Visual Studio 커뮤니티 버전을 설치합니다.
다운로드 사이트(★커뮤니티★)
h tps://ゔぃすあ lsつぢ오. 미 c 로소 ft. 코 m / 그럼 / 도 w 응 아 ds /
②설치 옵션은 모두 설치도 좋지만, 앱 개발을 하지 않으면 관련 패키지는 설치하지 않는 것이 좋다.
프로그램 내용
명령은 기본적으로 파라미터를 아무것도 지정하지 않으면 명령 사용법의 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
=======================================
끝에
이제 파일의 속성을 변경할 수 있습니다.
어떤 파일도 속성 변경이 가능합니다.
엑셀 파일이나 실행 파일 등도 가능합니다.
(^^)//
Reference
이 문제에 관하여(파일의 시간 속성을 변경하고 싶습니다! [C#]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neomi/items/ed2f5993f5736ad3f757
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음 소스를 "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
=======================================
끝에
이제 파일의 속성을 변경할 수 있습니다.
어떤 파일도 속성 변경이 가능합니다.
엑셀 파일이나 실행 파일 등도 가능합니다.
(^^)//
Reference
이 문제에 관하여(파일의 시간 속성을 변경하고 싶습니다! [C#]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neomi/items/ed2f5993f5736ad3f757
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
=======================================
이제 파일의 속성을 변경할 수 있습니다.
어떤 파일도 속성 변경이 가능합니다.
엑셀 파일이나 실행 파일 등도 가능합니다.
(^^)//
Reference
이 문제에 관하여(파일의 시간 속성을 변경하고 싶습니다! [C#]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neomi/items/ed2f5993f5736ad3f757텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)