Compactando / descompactando arquivos (Melhorado)
Publicado por Sandro Marcell 12/07/2007
[ Hits: 6.042 ]
Homepage: http://sanmarcell.wordpress.com
Esta versão melhorada compacta/descompacta arquivos de forma "inteligente", ou seja, ao passar os arquivos para o script, ele irá descobrir o que deve ser compactado e o que deve ser descompactado.
Ex.: script.tcl arq.txt arq.pdf arq.gz arq.tar.bz2 : Os arquivos 'arq.txt e arq.pdf' serão compactados; já os arquivos 'arq.gz e arq.tar.bz2' serão descompactados.
Isso será feito de forma simultânea sem a necessidade de parâmetros extras.
Espero que seja útil!
Falou!!!
#!/usr/bin/tcl # # Compacte/descompacte vários arquivos simultaneamente. # # Autor: Sandro Marcell (sandro_marcell@yahoo.com.br) # # Uso: nome_script arquivo1 [arquivoN] # É possível o uso do metacarectere (*) # # Obs.: São necessários os programas: tar, gzip e bzip2. # # Boa Vista - Roraima, 27/06/2007. # Checando parâmetros: if {$argc == 0} { puts stderr "Uso: [file tail $argv0] arquivo1 \[arquinoN\]" exit } # Simples avisos: proc Aguarde {} { puts stdout "Descompactando..." sleep 1 } proc Aguarde2 {} { puts stdout "Compactando..." sleep 1 } set SUCESSO "Arquivo descompactado!" set ERRO "-> Erro de entrada/saída." # Início do loop: foreach A $argv { # Testes condicionais: if {![file exists $A]} { puts stderr "-> Arquivo não encontrado." continue } elseif {![file owned $A]} { puts stderr "-> Sem permissão de acesso." continue } # Compactar ou descompactar? switch -glob $A { # Descompactando... *.tar.gz { Aguarde if {[catch {exec tar -xzf $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } *.gz { Aguarde if {[catch {exec gunzip $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } *.tar.bz2 { Aguarde if {[catch {exec tar -xjf $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } *.bz2 { Aguarde if {[catch {exec bunzip2 $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } default { # Compactando... if {[file isdirectory $A]} { Aguarde2 if {[catch {exec tar -cjf $A.tar.bz2 $A}] == 0} { puts stdout "Diretório compactado!" } else { puts stderr $ERRO } } if {[file isfile $A]} { Aguarde2 if {[catch {exec bzip2 -zfk9 $A}] == 0} { puts stdout "Arquivo compactado!" } else { puts stderr $ERRO } } } } continue } # Fim =)
Criando uma simples lixeira para o usuário [Melhorado]
Convertendo escalas termométricas
Simples visualizador de arquivos texto
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)