Exclua todos os arquivos da pasta, exceto aqueles com determinado prefixo

Exclua todos os arquivos da pasta, exceto aqueles com determinado prefixo

Tenho uma pasta preenchida com arquivos gerados automaticamente por um aplicativo. Existem extensões csv e png sendo criadas e armazenadas lá. Precisamos excluir todos os arquivos da pasta, exceto alguns arquivos png onde o nome do arquivo começa com "abc-". O sistema é uma caixa do Windows Server 2012 r2, e o objetivo é fazer isso por meio de um arquivo em lote usando o agendador de tarefas todas as noites.

Eu tentei usar alguns scripts diferentes pré-escritos, mas não excluiria esses arquivos png prefixados, apenas removeria todos. Como eu faria isso?

Responder1

Você pode tentar o PowerShell? Algo como:

$path = "C:\site\temp"
gci -Path $path | ? {!($_.Name -ilike "abc-*.png")} | % { Remove-Item -Path $_.FullName }

Responder2

Com o Batch você poderia fazer isso desta maneira:

@Echo OFF 

For %%# In ("*.*") DO (
    If /I "%%~x#" EQU ".png" (
        (Echo "%%~n#"| Findstr "^abc-")1>nul 2>&1 || (
            Del /Q "%%~#"
        )
    )
)


Pause&Exit

Eu itero todos os arquivos (que possuem uma extensão) e, se o arquivo tiver extensão ".png", avalio se o nome do arquivo começa com "abc-" para excluí-lo.

Faça um backup da sua pasta antes de testar.

Responder3

Além disso, faça backup do conteúdo da pasta em que você está trabalhando antes de testar.

Passo Um: Crie um subdiretório abaixo da pasta em questão.
Etapa dois: mova os arquivos para salvar nesse subdiretório.
Etapa três: exclua tudo o que resta na pasta.
Etapa quatro: mova os arquivos do subdiretório de volta para a pasta.
Etapa cinco: exclua o subdiretório.
Etapa seis: veja o que você tem.

Segue um script simples.

REM C:\SCRIPTS\MOVERPNG.CMD
C:
ECHO OFF
CLS
CD \SITE\TEMP 
MD BAR  
MOVE /y ABC-*.PNG \SITE\TEMP\BAR  
DEL /y *.PNG  
DEL /y *.CSV  
CD BAR  
MOVE *.PNG C:\SITE\TEMP 
CD ..  
RD /q BAR
ECHO MOVERPNG has completed.
DIR *.* /P /O:N 

informação relacionada