Você pode tentar o powershell? Algo como:
$path = "C:\site\temp"
gci -Path $path | ? {!($_.Name -ilike "abc-*.png")} | % { Remove-Item -Path $_.FullName }
Eu tenho uma pasta sendo 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 certos 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?
Com o Batch, você pode fazer isso da seguinte maneira:
@Echo OFF
For %%# In ("*.*") DO (
If /I "%%~x#" EQU ".png" (
(Echo "%%~n#"| Findstr "^abc-")1>nul 2>&1 || (
Del /Q "%%~#"
)
)
)
Pause&Exit
I itera todos os arquivos (que têm uma extensão), então Se o arquivo tem a extensão ".png", eu avalio se o nome do arquivo começa com "abc-" para excluí-lo.
Por favor, faça um backup da sua pasta antes de testar.
Além disso, faça o backup do conteúdo da pasta em que você está trabalhando antes de testar.
Primeiro Passo: Crie um subdiretório abaixo da pasta em questão.
Etapa 2: mover os arquivos para salvar nesse subdiretório.
Terceiro Passo: Apague tudo o que resta na pasta.
Etapa 4: Mover os arquivos do subdiretório de volta para a pasta.
Etapa 5: Excluir o subdiretório.
Passo Seis: Veja o que você tem.
Um script simples segue.
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
Tags windows batch-file script