rn.log

備忘録など

サブディレクトリ以下の特定の拡張子のファイルをコピーして一か所へまとめるWindowsバッチファイル(*.bat)

Windowsバッチ(*.bat)で特定の拡張子のファイルをコピーする方法を調べて自分なりにまとめてみた。


以下のバッチを実行するとサブディレクトリ以下の*.csファイルがTMPフォルダ直下へコピーされる

SET DIST_DIR=TMP
SET FILE_EXT=.cs

mkdir %DIST_DIR%

FOR /D /R %%D IN (*) DO (
  FOR %%F IN (%%D\*) DO (
    IF /I %%~xF==%FILE_EXT% copy %%F %DIST_DIR%
  )
)



IFの後にNOTを入れると*.csファイルを除いたファイルがコピーされるようになる

SET DIST_DIR=TMP
SET FILE_EXT=.cs

mkdir %DIST_DIR%

FOR /D /R %%D IN (*) DO (
  FOR %%F IN (%%D\*) DO (
    IF /I NOT %%~xF==%FILE_EXT% copy %%F %DIST_DIR%
  )
)

【C#】static変数やstaticプロパティの値を一括取得する

こう書くとpublicなstaticプロパティの値を一括取得できる。

Type type = typeof(SomeClass);
foreach (PropertyInfo pi in type.GetProperties())
{
    Debug.Log("property : " + pi.GetValue(null, null));
}


publicなstatic変数の値を取得したい場合はこう書く

Type type = typeof(SomeClass);
foreach (FieldInfo fi in type.GetFields())
{
    Debug.Log("field : " + fi.GetValue(null));
}

privateなものも取得したい場合はGetMembersを使うと良い

Type type = typeof(SomeClass);
var members = type.GetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);

foreach (var member in members)
{
    if (member.MemberType == MemberTypes.Property)
    {
        var property = (PropertyInfo)member;
        Debug.Log("property : " + property.GetValue(null, null));
    }

    if (member.MemberType == MemberTypes.Field)
    {
        var field = (FieldInfo)member;
        Debug.Log("field : " + field.GetValue(null));
    }
}