remove os registros de data e hora do histórico de arquivos do Windows no nome do arquivo

0

Copiei uma pasta criada usando o histórico de arquivos do windows 8 de uma unidade para um computador que executa o windows 7. Como não consegui usar uma função de restauração, todos os arquivos têm carimbos de hora como 01 Disappearing World (2015_01_09 04_57_38 UTC).mp3 . Existe uma maneira fácil de remover esses carimbos de hora?

    
por user406964 09.01.2015 / 09:29

4 respostas

1

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();
        }
    }
}
    
por 12.01.2018 / 19:40
0

Aqui está um script C #. Ele busca a lista de todos os arquivos. Em seguida, para cada um deles, remova a substring correspondente a algo semelhante a "(2016_04_19 21_26_33 UTC)".

string[] files = Directory.GetFiles(@"C:\Users\Sam\NODEJS\node_modules", "*.*", SearchOption.AllDirectories);
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);
    System.IO.File.Move(files[i], newName);
}
System.Diagnostics.Debug.WriteLine("Completed");
    
por 03.05.2016 / 20:30
0

Aqui está uma versão do Powershell

Get-ChildItem -Recurse | Where-Object { $_.Name -match " ?\(\d\d\d\d_\d\d_\d\d \d\d_\d\d_\d\d UTC\)" } | Rename-Item -NewName { $_.Name -replace " ?\(\d\d\d\d_\d\d_\d\d \d\d_\d\d_\d\d UTC\)", ""}
    
por 09.06.2017 / 01:38
0

Você precisará

  • Inicie o PowerShell ISE como administrador
  • Set-ExecutionPolicy unrestricted
  • Set-Location <your current path>
  • Executar
por 02.11.2017 / 00:07