Замените точки только базовым именем файла, а не полным именем, затем добавьте расширение и переименуйте.
sName = Replace(fso.GetBaseName(fil.Name), ".", "_")
fil.Name = sName & "." & fso.GetExtensionName(fil.Name)
Что-то вроде:
String ^ MyString = gcnew String("abcd");
for each ( Char c in MyString )
Console::Write(c);
Я никогда не использовал его, но эта статья MSDN указывает, что общий синтаксис просто:
for each(Type t in IEnumerable)
{
}