Aqui está o script do RainingChain ajustado um pouco e convertido em um aplicativo de console C # completo. Basta compilar e aproveitar, testado em meu próprio sistema.
Funções adicionadas:
-
Verificação do subdiretório e engolimento de exceção quando o acesso é negado.
-
Opera somente em arquivos com registro de data e hora, isso evita afetar outros dados.
-
Se o arquivo com registro de data e hora tiver outra cópia sem o registro de data e hora na mesma pasta, ele excluirá o registro de data e hora. Isso ocorre, por exemplo, quando um programa foi reinstalado e criou o arquivo novamente sem o registro de data e hora.
-
using System.Text.RegularExpressions;
using System;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("FileHistory timestamp remover V1.0 - HamCode 2018");
Console.WriteLine("Based on a simple C# script by user RainingChain @ Superuser.com");
Console.WriteLine("--------------------------------------------------------------------");
Console.WriteLine();
ReRun:;
Console.WriteLine("Please enter files path, subdirectories will be scanned: ");
string input = Console.ReadLine();
try
{
foreach (string SubDir in Directory.GetDirectories(input))
{
try
{
string[] files = Directory.GetFiles(@SubDir, "*(????_??_?? ??_??_?? UTC).*", SearchOption.TopDirectoryOnly);
Console.WriteLine();
Console.Write("Current directory: ");
Console.Write(@SubDir);
Console.WriteLine(" The following files have been identified as containing a FileHistory timestamp:");
foreach (var value in files)
{
Console.Write(value);
}
Console.WriteLine();
Console.WriteLine();
for (int i = 0; i < files.Length; i++)
{
string newName = Regex.Replace(files[i], @" ?\(\d\d\d\d_\d\d_\d\d \d\d_\d\d_\d\d UTC\)", "");
//System.Diagnostics.Debug.WriteLine(files[i], newName);
File.SetAttributes(files[i], File.GetAttributes(files[i]) & ~FileAttributes.ReadOnly);
if (File.Exists(newName))
{
File.Delete(files[i]);
Console.Write("File deleted: ");
Console.Write(files[i]);
Console.WriteLine();
goto DoNothing;
}
System.IO.File.Move(files[i], newName);
Console.Write("Backup file renamed: ");
Console.Write(newName);
Console.WriteLine();
DoNothing:;
}
}
catch (Exception ds)
{
Console.WriteLine(ds);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
goto ReRun;
}
Console.WriteLine("Completed, press any key to exit.");
Console.Read();
}
}
}