0

ローカル コンピューターのディレクトリでレポートを実行するには、小さな C# コンソール アプリケーションを作成する必要があります。レポートは Excel ドキュメントであり、以下を含む 3 つの列が含まれます。フォルダーにデータが含まれている場合は列内の各フォルダーの名前、フォルダーにデータが含まれている場合は最終更新日。私の現在の考えは、ディレクトリを読み取り、各フォルダーを通過し、一度に行を作成するこれらのテストを実行する小さな C# コンソール アプリケーションです。私はC#にかなり慣れていないので、これをどのように実行できるかわかりません。次のコードを試しました:

static void Main(string[] args)
        {
            string[] filePaths = Directory.GetFiles(@"C:/TestFolder/");

            foreach (string value in filePaths)
            {
                Console.WriteLine(value);



            }
        }

ありがとう

4

2 に答える 2

1

あなたがすべき:

  • DirectoryInfoandFileInfoの代わりにDirectoryandを使用しFileます (ファイル名だけでなく、より多くの情報を提供します)
  • EnumerateFiles代わりに使用GetFiles(一度にすべてを取得するのではなく、ファイルを列挙します)
  • プロパティに属性FileInfoを含む取得されたすべてに対して再帰的に実行しますDirectoryAttributes

したがって、次の行に沿ったもの(コードは頭からまっすぐで、コンパイルもテストもされていません):

// in your caller method
ProcessFolder(@"C:/TestFolder/");


void ProcessFolder(string path)
{
    foreach (var file in DirectoryInfo.EnumerateFiles(path))
    {
        if(file.Attributes & FileAttributes.Directory == FileAttributes.Directory)
            ProcessFolder(file.FullName); // recursively handle a directory
        else
            Console.Out.Writeline(file.FullName); // handle a file
    }
}
于 2012-10-04T14:46:41.343 に答える
0

ここでは、出力をクリーンアップするために何もしていません。コンテンツには単純な文字列配列を使用していますが、必要に応じて自由にクリーンアップしてください。

サブフォルダーがない場合:

    static void Main(string[] args)
    {
        DirectoryInfo di = new DirectoryInfo("c:\\offTopic");
        var data = di.EnumerateDirectories()
            .Select(a => 
                new string[] 
                {   a.Name, 
                    "" + (a.EnumerateFiles().Count() > 0), 
                    "" + a.EnumerateFileSystemInfos().Max(b => b.LastWriteTime) 
                });

       foreach (var x in data)
       {
           Console.WriteLine(string.Join(",", x));
       }

    }

次に、これらの内容を Excel で開くことができる CSV (コンマ区切り値) のサフィックスを持つファイルに書き出す必要があります。

于 2012-10-04T14:54:36.703 に答える