Usuário com melhor resposta
Script para deletar determinadas pastas e subpastas e não deletar outras determinadas pastas e subpastas

Pergunta
-
Boa dia!
Senhores, necessito criar um script que apague algumas pastas e subpastas, onde essas pastas tem o nome começado por d:\RM\_RM0.
Porém não quero que delete as outras pastas e arquivos que estão no mesmo diretório e que não começam com _RM0.
C:\RM
dentro da pasta RM existe:
_RM001
_RM02
e assim por diante.
Porém deve manter as outras pastas e arquivos como por exemplo
C:\RM
pasta1
pasta2
rm.exe
rm.txt
rm.dat
teste.txt
Já procurei alguns scripts e fiz algumas modificações porém não estou conseguindo apagar as pastas que começam com _RM0 e deixar as outras pastas e arquivos que citei.
Agradeço desde já a ajuda.
Obrigado!
Júlio César BH
Respostas
-
Boa tarde Julio,
veja se te ajuda o script abaixo, eu fiz com base no script desse Post Original, adaptando a sua necessidade...
Set FSo = CreateObject("Scripting.FileSystemObject") sPasta="C:\RM" '***Verifica se a pasta existe If FSo.FolderExists(sPasta) Then Apagar_Arquivos(sPasta) end if If not FSo.FolderExists(sPasta) Then Wscript.echo "O Caminho [" & sPasta & "] não existe.." Else wscript.echo "Não há pasta para Deletar" End If '***Rotina para excluir pasta e Subpasta Sub Apagar_Arquivos(Pasta) Set folder = FSO.getFolder(Pasta) If folder.Subfolders.count > 0 Then '***Checa se a pasta tem Subpastas For each SubFolder in folder.Subfolders Apagar_Arquivos SubFolder ''***Execuata Rotina para excluir Subpasta 'wscript.echo "SubPasta: "& SubFolder Next End If '***Checa se existe pasta que no nome tenha _RM0, seja em qualquer parte do Nome If InStr(ucase(Folder.name),"_RM0") <> 0 Then wscript.echo "Deletar Pasta : "& Folder.name Folder.delete true End If End Sub
att, Aparecido Deveza
- Sugerido como Resposta Fábio JrModerator quinta-feira, 26 de dezembro de 2013 15:37
- Marcado como Resposta Fábio JrModerator sexta-feira, 3 de janeiro de 2014 15:47
-
Olá, bom eu fiz um script para o seu problema, a única diferença com relação ao do Aparecido é a linguagem que usei: batch script. (a do dele foi VBScript)
@ECHO OFF & COLOR 04 & TITLE Um título bobo aqui SET "PASTA=D:\RM" & SET "NUM=0" DEL /S /Q "%tmp%\Lista.txt" >NUL 2>&1 & mode 45,15 DIR /B /AD "%Pasta%\*.*">>"%tmp%\Lista.txt" & CLS FOR /F "TOKENS=*" %%A IN ('FINDSTR /I /C:"_RM0" "%tmp%\Lista.txt"') DO ( ECHO %%A DEL /S /Q "%%a\*.*" >NUL 2>&1 RMDIR /S /Q "%PASTA%\%%A" && SET /A NUM+=1 ) IF %NUM% EQU 0 (SET "NUM=Nenhuma") ECHO. & ECHO Total de pastas apagadas: %NUM% PAUSE>NUL & EXIT
Para usá-lo basta: |abrir o bloco de notas -> colar o código -> ir em Arquivo -> Salvar como -> colocar um nome qualquer com o final ".bat" (ex: script.bat) -> clicar em cima -> ser feliz .
PS: o script faz exatamente o que pediu.
É isso, té +
Att. Hmenon- Editado Agam3non domingo, 29 de dezembro de 2013 20:17
- Marcado como Resposta Fábio JrModerator sexta-feira, 3 de janeiro de 2014 15:47
Todas as Respostas
-
Boa tarde Julio,
veja se te ajuda o script abaixo, eu fiz com base no script desse Post Original, adaptando a sua necessidade...
Set FSo = CreateObject("Scripting.FileSystemObject") sPasta="C:\RM" '***Verifica se a pasta existe If FSo.FolderExists(sPasta) Then Apagar_Arquivos(sPasta) end if If not FSo.FolderExists(sPasta) Then Wscript.echo "O Caminho [" & sPasta & "] não existe.." Else wscript.echo "Não há pasta para Deletar" End If '***Rotina para excluir pasta e Subpasta Sub Apagar_Arquivos(Pasta) Set folder = FSO.getFolder(Pasta) If folder.Subfolders.count > 0 Then '***Checa se a pasta tem Subpastas For each SubFolder in folder.Subfolders Apagar_Arquivos SubFolder ''***Execuata Rotina para excluir Subpasta 'wscript.echo "SubPasta: "& SubFolder Next End If '***Checa se existe pasta que no nome tenha _RM0, seja em qualquer parte do Nome If InStr(ucase(Folder.name),"_RM0") <> 0 Then wscript.echo "Deletar Pasta : "& Folder.name Folder.delete true End If End Sub
att, Aparecido Deveza
- Sugerido como Resposta Fábio JrModerator quinta-feira, 26 de dezembro de 2013 15:37
- Marcado como Resposta Fábio JrModerator sexta-feira, 3 de janeiro de 2014 15:47
-
Olá, bom eu fiz um script para o seu problema, a única diferença com relação ao do Aparecido é a linguagem que usei: batch script. (a do dele foi VBScript)
@ECHO OFF & COLOR 04 & TITLE Um título bobo aqui SET "PASTA=D:\RM" & SET "NUM=0" DEL /S /Q "%tmp%\Lista.txt" >NUL 2>&1 & mode 45,15 DIR /B /AD "%Pasta%\*.*">>"%tmp%\Lista.txt" & CLS FOR /F "TOKENS=*" %%A IN ('FINDSTR /I /C:"_RM0" "%tmp%\Lista.txt"') DO ( ECHO %%A DEL /S /Q "%%a\*.*" >NUL 2>&1 RMDIR /S /Q "%PASTA%\%%A" && SET /A NUM+=1 ) IF %NUM% EQU 0 (SET "NUM=Nenhuma") ECHO. & ECHO Total de pastas apagadas: %NUM% PAUSE>NUL & EXIT
Para usá-lo basta: |abrir o bloco de notas -> colar o código -> ir em Arquivo -> Salvar como -> colocar um nome qualquer com o final ".bat" (ex: script.bat) -> clicar em cima -> ser feliz .
PS: o script faz exatamente o que pediu.
É isso, té +
Att. Hmenon- Editado Agam3non domingo, 29 de dezembro de 2013 20:17
- Marcado como Resposta Fábio JrModerator sexta-feira, 3 de janeiro de 2014 15:47