重複の可能性:
C#ファイルはファイル名パターンで存在します
たとえば、documentsというフォルダーがあり、pdf、ビデオ、テキスト、写真などで構成されるdocumentsフォルダーがあります。.doc拡張子のみを使用して何かを実行したいとします。私が考えることができる唯一のことは、実際にはcmd.exeを使用し、ディレクトリでdirコマンドを使用するプロセスを作成することですが、より効率的なものを探しています。何かお勧めはありますか?
重複の可能性:
C#ファイルはファイル名パターンで存在します
たとえば、documentsというフォルダーがあり、pdf、ビデオ、テキスト、写真などで構成されるdocumentsフォルダーがあります。.doc拡張子のみを使用して何かを実行したいとします。私が考えることができる唯一のことは、実際にはcmd.exeを使用し、ディレクトリでdirコマンドを使用するプロセスを作成することですが、より効率的なものを探しています。何かお勧めはありますか?
おそらく、DirectoryInfo.GetFilesメソッドを参照しています。
foreach (FileInfo fi in new DirectoryInfo(@"C:\documents").GetFiles().Where(x => x.Extension.ToLower() == ".doc")) {
Console.WriteLine(fi.Name);
}
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.doc*", SearchOption.AllDirectories);
foreach (string currentFile in txtFiles)
{
...
}
より効率的なものが必要な場合:
http://visuallogparser.codeplex.com/にいる善良な人々が、ソースコードを提供してくれました。
VS2010でVisualLogParserソリューションを開き、デバッグに関するプロンプトを無視します。ソリューションが読み込まれた後、F5、コンボボックスをFS(FileSystem)に設定し、このクエリを貼り付けて、[移動]を押します。
SELECT
ContentPath, [Days (Old)], FileName, [Creation Date Time]
USING creationtime AS [Creation Date Time],
TO_DATE([Creation Date Time]) AS Cdate,
SUB(TO_LOCALTIME(SYSTEM_TIMESTAMP()), Cdate) AS Days,
DIV(TO_INT(Days),86400) As [Days (Old)],
EXTRACT_PATH(TO_LOWERCASE(path)) AS ContentPath,
TO_LOWERCASE(name) AS FileName
FROM 'c:\*.doc'
WHERE
(attributes NOT LIKE 'D%')
AND
([Days (Old)] >= TO_INT('0'))
ORDER BY [Creation Date Time] DESC