Estou com um problema que parece: Como excluir arquivos com texto especificado em seus nomes? excluiria o que não quero que seja excluído.
Devido a um problema com o OneDrive depois de instalar um disco rígido interno extra e mover minha pasta OneDrive seguindo as instruções no Suporte da Microsoft , não sei o que fiz de errado, mas agora copiei todos os meus arquivos para meu novo disco rígido e o OneDrive está sincronizando com duplicatas de cada arquivo - copy
no final de cada nome de arquivo antes da extensão. São gigabytes de dados em milhares de arquivos.
Ao observar o que seria excluído se eu usar *- copy.*
Powershell ou cmd.exe, parece que um arquivo que criei (copy.bat) seria excluído e quero mantê-lo.
Como eu usaria curingas para excluir tudo - copy
no final do nome do arquivo, mas protegeria arquivos como copy.bat?
O que está acontecendo no momento é que your
*- copy.*
está sendo analisado como dois argumentos separados por espaço:*-
ecopy.*
. Depois de ver isso, é fácil reconhecer que o segundo deles corresponderá ao seucopy.bat
arquivo.A correção é colocar aspas duplas na parte invariante (especificamente, garantindo que o espaço esteja entre aspas duplas):
*"- copy".*
:Como este é o Windows, você também pode citar o
*
, pois ele é analisado pelo comando em vez da ferramenta Powershell/CMD:Além disso, se você tem alguma intenção de usar um sistema baseado em UNIX/Linux (incluindo um Mac), não adquira o hábito de tentar citar um curinga e esperar que ele atue como um padrão, porque ele ganhou. t: será analisado como um asterisco literal. Minha primeira sugestão funcionará em qualquer lugar. A segunda sugestão é específica do Windows.
O
.bat
arquivo não precisa estar na mesma pasta que os arquivos que estão sendo excluídos. Você pode executá-lo de outra pasta executando\path\copy.bat
.Se mais arquivos forem afetados além do
copy.bat
, você precisará copiá-los em outro lugar antes de executar ocopy.bat
.Você também pode usar expressões regex mais sofisticadas no PowerShell do que as primitivas disponíveis no CMD. Você pode então refinar o regex para incluir menos arquivos, se puder definir melhor suas regras de nomenclatura.
Dê uma olhada em uma ferramenta gratuita útil - Utilitário de renomeação em massa. https://www.bulkrenameutility.co.uk
Ele pode verificar e visualizar recursivamente tarefas de renomeação em massa e é extremamente útil, pois possui uma visualização. Esteja avisado: você deve primeiro fazer um backup. É uma ferramenta poderosa e não há opção de desfazer após o commit.