Tarefa agendada do Windows - .bat é executado para sempre

0

Eu tenho uma tarefa agendada para limpar pastas em um disco rígido automaticamente; remove arquivos com mais de uma certa quantidade de dias.

Basicamente, ele executa um arquivo .bat cheio de linhas que se parecem com isso:

FORFILES /P "D:\Folder1\SubFolder1" /D -30 /C "cmd /c del /F /Q @path"
FORFILES /P "D:\Folder1\SubFolder4" /D -30 /C "cmd /c del /F /Q @path"

Eu notei que a tarefa geralmente nunca termina; e eu não sei porque. O arquivo .bat termina em alguns minutos quando executado manualmente e as pastas são limpas posteriormente.

Eu acho que o motivo pode ser que às vezes um prompt pode aparecer:

Delete [...] are you sure? (Y/N): _

por causa da exclusão recursiva em subpastas. Observe que eu adicionei as chaves /F e /Q ao comando del .

Como posso ter certeza de que a tarefa atende automaticamente Y a qualquer prompt que possa aparecer? Ou este não é o caminho que devo seguir para resolver meu problema - devo melhorar meu arquivo .bat ?

    
por MarioDS 23.07.2014 / 09:49

1 resposta

2

Seu problema parece ser que os arquivos encontrados encontram arquivos e diretórios, e você está apenas procurando excluir arquivos.

Por favor, tente isto no comando / C:

"cmd / c se @ isdir == FALSE del @path"

Isso só irá disparar o comando del se o iterador forfiles NÃO apontar para um diretório.

Eu deixaria de fora o -q, pelo menos por enquanto, para ver se tudo está bem. Mas eu acho que você não precisa / quer amordaçar as perguntas de confirmação se você direcionar as coisas certas.

Além disso, o / f é necessário apenas se você deseja excluir arquivos somente leitura. Só force se tiver certeza de que é necessário:)

Boa sorte, espero que isso ajude.

    
por 23.07.2014 / 10:54