Eu vi como excluir todos os arquivos que não possuem uma determinada string em seu nome
No entanto, gostaria de excluir arquivos que não tenham uma determinada string em seu nome de arquivo ou caminho (não apenas nome de arquivo) e gostaria que essa string fosse o caractere ®.
Com base nesse histórico de revisão , o seguinte funciona para a string "MS", mas não para caracteres especiais:
@echo off
setlocal disableDelayedExpansion
for /f "usebackq tokens=*" %%i in (`dir /a:-d /b /s *.zip ^| findstr /v MS` ) do (
echo del /s /q %%i
)
endlocal
Para versões mais antigas do PowerShell que não suportam o
-File
parâmetro, use:Obs.: Para adicionar ®em seu código, tente...
Talvez isso possa ajudar?
Na verdade, o caractere especial do console, onde ele ativa a página e a codifica usada para escrever/ler o nome do arquivo, e move essa informação para variáveis, lê e compara tudo na sopa de letrinhas, é um pouco difícil de manusear no cmd/bat , por isso pedi ajuda para um idioma...
Portanto, para uma proposta paranóica, considerando ações para excluir arquivos, peguei o C# para tentar implementar uma comparação usando base64 para string (curinga alt 169 = ®).
O resultado dessas ações é um script cmd/bat, que em tempo de execução compila as fontes C# em um executável, que será usado pelo script, para obter a string do nome do arquivo, se o nome do caractere estiver presente (em base64) no nome.
Isso é meu amigo, ou é algo completamente diferente do exposto acima, e, que meu inglês limitado me impede de te explicar com clareza :)
O lote não é compatível com Unicode, portanto, ele reconhece ® como ©, então acabei de alterar ® por © no arquivo de lote, mas acho que alterar a página de código com chcp também funciona. Deseja excluir todos os arquivos que não têm o ® no nome ou apenas arquivos compactados? Bem, se forem todos os arquivos, basta alterar *.zip para * no for: