Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudemir01

Deletar todas as pasta utilizando .bat

Recommended Posts

Olá amigos.

Estou escrevendo um script.bat onde limpa uma pasta deixando apenas os arquivos necessários para a abertura de um servidor de MW2 (http://steamcommunity.com/sharedfiles/filedetails/?id=718308794)
Entretanto não consigo deletar as pastas utilizando:
rd * /s /d

O console me retorna:
A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está incorreta.

    @echo off
    title Cleanup IW4M - Server
    attrib %installdir% -r -h -s /d /s
    attrib +r +s cleanup.bat
    if exist mod (
    attrib +r +s mod
    )
    if exist main (
    attrib +r +s main\iw_server.iwd
    attrib +r +s main\*.cfg
    del main\*.* /q
    )
    if exist scripts (
    attrib +r +s scripts
    )
    set /p lang= <localization.txt
    if exist zone\%lang% (
    attrib +r +s zone\%lang%\af_caves.ff
    attrib +r +s zone\%lang%\af_chase.ff
    attrib +r +s zone\%lang%\airport.ff
    del zone\%lang%\*.* /q
    )
    if exist zone\v2 (
    attrib +r +s zone\v2\dlc1_ui_mp.ff
    attrib +r +s zone\v2\dlc2_ui_mp.ff
    attrib +r +s zone\v2\environment_forest.ff
    attrib +r +s zone\v2\oilrig_load.ff
    del zone\v2\*.* /q
    )
    if exist bin (
    attrib +r +s bin
    )
    if exist v2 (
    attrib +r +s v2
    )
    attrib +r +s iw4m.dll
    attrib +r +s libnp.dll
    attrib +r +s logo.bmp
    attrib +r +s iw4m.exe
    attrib +r +s startserver.bat
    attrib +r +s license.dat
    attrib +r +s binkw32.dll
    attrib +r +s localization.txt
    attrib +r +s mss32.dll
    del *.* /q
    attrib -r -h -s /d /s
    rd * /s /q
    attrib %installdir% -r -h -s /d /s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me parece que isso faz apagar tudo:
rd . /s /q
Entretanto me parece que o rd ignora proteções. Não há como eu saber quais pastas o usuário tem, função do script é apagar tudo que não é necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei o que é necessário e protejo "attrib +r +s" e deleto tudo e tudo que não esta protegido ou seja tudo que não é necessário. O que não é necessário pode ser qualquer coisa e eu não faço ideia do que pode ter, o usuário pode ter incluído arquivos de outros clientes e diversas outras coisas que não dá para eu saber.
O problema é que "del" deletar apenas os arquivos da pasta raiz para se deletar as pastas teria de ser "rd" e como eu não sei bem quais pastas vão estar lá usei "rd . /s /q" entretanto "rd" ignora a proteção feita por "attrib +r +s" e acaba deletando tudo.

Eu pensei em contornar esse problema movendo os arquivos necessários para outro lugar e assim posso deletar tudo que ficou na pasta e depois eu voltaria os arquivos necessários.
"move zone\v2\dlc1_ui_mp.ff %HomeDrive%"
mas não sei como fazer para voltar os arquivos já que o nome da pasta e sua unidade são desconhecidos (eu posso usar um nome e a pessoa ter escolhido outro), pensei em criar todas as pastas no desktop e mover os arquivos de acordo com suas pastas mas quando tento criar umapasta no desktop o cmd me retorna isso:

Já existe uma subpasta ou um arquivo C:\Users\Claudemir\Desktop\. Erro ao processar: C:\Users\Claudemir\Desktop\.

Quando tento mover os arquivos para o desktop eles não vão para o desktop, eles vão para a pasta onde esta o .bat ou seja a pasta raiz original da pessoa, isso não seria mal se tudo que esta nessa pasta seria excluído.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.