Compactando / descompactando arquivos (Melhorado)

Publicado por Sandro Marcell 12/07/2007

[ Hits: 5.902 ]

Homepage: http://sanmarcell.wordpress.com

Download descom.tcl




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!!!

  



Esconder código-fonte

#!/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 =)

Scripts recomendados

Convertendo escalas termométricas

Criando uma simples lixeira para o usuário [Melhorado]

Gerando senhas aleatórias

Simples relógio digital

Compactando arquivos e diretórios simultâneamente


  

Comentários
[1] Comentário enviado por SMarcell em 13/07/2007 - 13:55h

Dei uma melhorada neste script. Segue o link:

>> http://www.slackbr.org/forum/viewtopic.php?t=14709

Falou!!!

[2] Comentário enviado por flavio a nunes em 15/07/2007 - 21:55h

OI MEU NOME É FLAVIO BAIXEI UM JOGO CHAMADO ACTION CUBE MAS QUANDO EU CLICO ELE ABRE COM O COMPCTADOR E DECOMPACTADOR DE ARQUIVO O QUE EU FAÇO ? VALEU!!!!!!!!!!!

[3] Comentário enviado por SMarcell em 22/07/2007 - 15:13h

1 - Descompacte o arquivo em algum diretório de sua escolha;
2 - Acesse este diretório e via terminal execute:
sh actioncube.sh

Falou!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts