none
Script para deletar determinadas pastas e subpastas e não deletar outras determinadas pastas e subpastas RRS feed

  • 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

    segunda-feira, 23 de dezembro de 2013 13:59

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

    segunda-feira, 23 de dezembro de 2013 17:38
  • 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
    domingo, 29 de dezembro de 2013 20:16

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

    segunda-feira, 23 de dezembro de 2013 17:38
  • 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
    domingo, 29 de dezembro de 2013 20:16