Batch File para excluir uma pasta, se ela não contiver um arquivo específico

2

Eu tenho uma pasta com várias subpastas. Eu preciso de um arquivo em lotes que olha para baixo na lista de subpastas e verifica se existe um arquivo especificado. Se o arquivo não existir, a subpasta pode ser excluída.

Isso precisa ser executado nas estações de trabalho do Windows 7.

Estou misturando minha sintaxe em meus comandos for / f e if:

for /f /f%% in ('dir /b c:\test') do if exist "test.txt" rename c:\test\%% tobedeleted

Acho que estou tentando fazer muito em um argumento ou estou perdendo algo vital.

    
por Matt.P 18.12.2015 / 13:07

1 resposta

1

Se o arquivo não existir, a subpasta poderá ser excluída.

Você precisa de algo como o seguinte:

echo off
setlocal enableDelayedExpansion
for /f %%i in ('dir /a:d /b /s c:\test') do (
  set _dir=%%i
  if exist !_dir!\test.txt (
    rem do nothing
    ) else (
    echo rd !_dir!
    )
  )
endlocal

Notas:

  • Remova o echo antes de rd quando tiver certeza de que os diretórios corretos serão excluídos.
  • Adicione /s a rd se o diretório contiver subdiretórios.
  • Adicione /q a rd para remover a confirmação S / N.

Leitura Adicional

por 18.12.2015 / 19:45