.
, "", -. , FileInfo DirectoryInfo .
public static void UnhideAll(string startDir)
{
DirectoryInfo dir = new DirectoryInfo(startDir);
Console.WriteLine("Working in {0}", startDir);
if ((dir.Attributes & FileAttributes.Hidden) != 0)
{
Console.WriteLine("Clearing hidden flag on dir");
dir.Attributes &= ~FileAttributes.Hidden;
}
else
Console.WriteLine("No need to clear flag since it already non-hidden");
foreach (var subDir in dir.GetDirectories())
UnhideAll(subDir.FullName);
foreach (var file in dir.GetFiles())
{
if ((file.Attributes & FileAttributes.Hidden) != 0)
{
Console.WriteLine("Clearing hidden flag on file {0}", file.FullName);
file.Attributes &= ~FileAttributes.Hidden;
}
else
Console.WriteLine("Skipping {0} since it not hidden", file.FullName);
}
}
,
UnhideAll(@"C:\SomePath\That\Should\Be\Unhidden");
Of course, you will want to delete all the calls Console.WriteLinewhen using this code, but I left them there to make it easier for you to see what happens when the code works. Here's a more condensed version:
public static void UnhideAll(string startDir)
{
DirectoryInfo dir = new DirectoryInfo(startDir);
dir.Attributes &= ~FileAttributes.Hidden;
foreach (var subDir in dir.GetDirectories())
UnhideAll(subDir.FullName);
foreach (var file in dir.GetFiles())
file.Attributes &= ~FileAttributes.Hidden;
}
source
share