Truque Para SubVersion
Autor: Renato Aloi | Publicado: 2009-03-04T21:59:00-03:00

Pessoal, estou colocando esse post no blog, pois durante muito tempo pesquisei uma forma rápida e fácil de apagar diretórios dentro de diretórios.Quem utiliza o SubVersion sabe que isso é muito útil de vez em quando. Por duas razões: a primeira é que sempre que compilamos uma aplicação .Net, o Visual Studio cria dois diretórios dentro de cada projeto: bin e obj; a segunda razão é quando queremos retirar um projeto do controle do SubVersion e precisamos apagar o diretório .svn dentro de cada diretório da aplicação.Essa tarefa é muito enfadonha, principalmente quando a aplicação possui dezenas de pastas.O problema com os diretórios bin e obj é que eles contém diversos arquivos resultantes da compilação, inclusive vários sub-diretórios temporários. E não queremos estes diretórios dentro do repositório, pois são produtos da aplicação e não código-fonte.A receita que eu achei é bem simples, mas também bem curiosa. Eu por exemplo não sabia que o DOS tinha um comando de laço FOR. Pois é, esse comando existe e funciona muito bem!Digitando FOR /? na linha de comando do DOS, podemos ver um texto que nos auxilia a montar o comando. Por exemplo:Clique na imagem para ampliar.Veja que dessa forma, podemos executar um comando dentro de um laço de arquivos.O que eu fiz, foi colocar a seguinte instrução dentro de um arquivo .BAT:FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *%1*') DO RMDIR /S /Q "%%G"Este comando acima executa o comando DIR com as opções de pesquisa por diretório e com recursividade, para entrar em todos as sub-pastas.O comando RMDIR remove cada pasta encontrada que atende o filtro *%1*. O parâmetro %1 é informado pela linha de comando. Se chamarmos o arquivo de lote de DELSUBDIR.BAT e quisermos apagar as pastas BIN, então teremos a seguinte instrução:DELSUBDIR.BAT BINRepare que este comando acima utilizará o seguinte filtro: *BIN*. Ou seja, apagará todos os diretórios que tiverem o termo BIN no nome, seja no começo, meio ou fim. Tome cuidado então caso na sua aplicação você tenha um diretório chamado: "Albino", por exemplo. Por isso, ajuste o comando para suas necessidades.Bom, para facilitar o trabalho, eu criei um outro arquivo .BAT para apagar as pastas BIN e OBJ recursivamente e o incluí no diretório SendTo (EnviarPara) do Windows.Eu criei então o arquivo DEL_OBJ_BIN.BAT com as seguintes instruções:@echo offcd %1call delsubdir bincall delsubdir objPerceba que o comando CD %1 é importante para alterar o prompt da linha de comando para o diretório que terá os BINs e OBJs apagados.Mais uma vez o %1 é um parametro de linha de comando, passado para o arquivo .BAT na execução.Mas dessa vez, como vamos colocar esse arquivo dentro da pasta SendTo, esse parâmetro será automaticamente passado para o arquivo .BAT quando selecionarmos o menu de contexto apropriado. Veja exemplo abaixo:Clique na imagem para ampliar.Pronto, é isso! Simples assim, basta clicar com o botão direito no diretório e selecionar Enviar para -> Del_Bin_Obj.bat e todos os diretórios BINs e OBJs somem instantaneamente!Lembre-se que apesar de aparecer no menu de contexto a opção "Enviar para", o diretório chama-se SendTo e fica em:C:\Documents and Settings\[Nome do Seu Usuário Logado]\SendTo Até a próxima!Graccs.