
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