A partir de C #, você pode usar DirectoryInfo para percorrer a árvore de diretórios, bem como obter o número de arquivos em cada diretório. Por exemplo:
DirectoryInfo di = new DirectoryInfo(@"C:\");
var count = di.GetFiles().LongCount();
Você está apenas tentando encontrar diferenças entre duas árvores de diretórios? Ou para fazer uma cópia sincronizada? Nesse caso, você pode considerar o uso de "robocopy".