Я хочу использовать класс Process для выполнения метода command.exe, чтобы вернуть количество файлов в родительском каталоге.
Он должен использовать команду .exe (по разным причинам).
Это мой код:
private static Int64 GetFileCount(string path)
{
Int64 ct = 0;
Process process = new Process();
process.StartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.Arguments = "dir \"" + path + "\" /s/a-d | find /c \".dat\"";
process.StartInfo.WorkingDirectory = path;
process.Start();
string output = process.StandardOutput.ReadToEnd();
if (output != "")
{
ct = Convert.ToInt64(output);
}
process.WaitForExit();
return ct;
}
переменная пути:
d:\Cloud\Catalogues\0\2015
Я скопировал это и выполнил в командной строке DOS, и он работает хорошо, поэтому я знаю, что работает DOS.
Это то, что я скопировал и запустил в командной строке DOS:
dir "d:\Cloud\Catalogues\0\2015" /s/a-d | find /c ".dat"
Я использовал другие команды DOS в своем приложении C #, и все это работает хорошо.
Результатом всегда является пустая строка {""}.
Именно с этой функцией 'find' у меня возникла проблема.
Я знаю, что могу использовать файл bat, но для простоты я предпочел бы использовать вышеупомянутое.
Я что-то пропустил?