Após um bom tempo acostumado com Shell Script, ter que automatizar processos no Windows (inevitavelmente fazendo uso do MS-DOS...) parece um tanto traumatizante.
Felizmente esse tão esquecido prompt de comando tem sua pseudo linguagem de controle!
Fiz um script de lote, backup-workspace.bat, para realizar o backup de determinados diretórios de trabalho do Eclipse:
@echo off
set ZIP=C:\Arquiv~1\7-Zip\7z.exe
set WKS=%1
echo Backing up workspace %WKS%...
%ZIP% a -r -x@backup-ignore-list.txt -mx=9 %WKS%.zip %WKS%
A tarefa dele é através do 7-ZIP [1] fazer o backup dos arquivos contidos no diretório especificado como argumento no script. Um arquivo com a extensão ZIP e mesmo nome do diretório será criado.
Os padrões especificados neste arquivo de texto, backup-ignore-list.txt, farão com que determinados arquivos e diretórios sejam ignorados:
bin
Thumbs.db
*.log
*.class
org.eclipse.core.resources\.history
org.eclipse.jdt.core
org.eclipse.epp.usagedata.recording
org.eclipse.wst.server.core\tmp0
A última etapa, a criação de um único script para executar os diversos diretórios desejados, precisava ser feita. O novo script, backup-all.bat, poderia ter o seguinte conteúdo:
@echo off
backup-workspace ApressEJB3
backup-workspace Concorde
backup-workspace HiberStruts
backup-workspace PacktEJB3
Achei esse código meio feio, então resolvi dar uma investigada em como deixá-lo menos lusitano...
E eis que encontro o famigerado laço FOR no MS-DOS [2]...!
Agora sim, com umas leves modificações o script ficou assim:
@echo off
set WKS=ApressEJB3, Concorde, HiberStruts, PacktEJB3
for %%w in (%WKS%) do backup-workspace %%w
É, aparentemente ele fez tudo certinho após a execução..!
Referências: