Ir para conteúdo

Arquivado

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

Shura16

MIgração BAT, JS e HTA para Python

Recommended Posts

Olá pessoal.

 

Gostaria de ajuda dos colegas para converter um programa feito inicialmente em bat.

Para melhorar um pouco usei Javascript e HTA para criar uma interface gráfica.

Estava pensando em usar python e depois usar o py2exe para transformá-lo em um executável. Inicialmente pode ser em modo texto mesmo, mas posteriormente penso em implementar uma interface gráfica.

 

O script é um utilitário de banco de dados que chama executáveis fornecidos pelo SGBD para a realização de reparação em bancos com problemas. O SGBD em questão é o Firebird.

 

Gostaria de saber onde posso começar a estudar para poder implementar tal software, pois não seria justo o pessoal fazer para mim e eu também não aprenderia.

 

Seguem os scripts:

 

backup.bat

@echo off

if %2 == -s ( 
 @echo on
 @echo *** mostrando os detalhes 
) else (
  @echo *** ocultando os detalhes
  @echo off
)


@echo ***
@echo *** Copiando banco de Dados
@echo ***
copy %1.FDB %1.COP /z
@if errorlevel = 1 goto errocopia
@goto continua
:continua


gfix -shut -force 0  %1.COP -User usuario -Password senha
@if errorlevel = 1 goto continua
@goto continua
:continua

gfix -online normal %1.COP -User usuario -Password senha

gfix -v -f %1.COP -User usuario -Password senha
@if errorlevel = 1 goto erro

gfix -m -i %1.COP -User usuario -Password senha
@if errorlevel = 1 goto erro

gbak -g -b -z -v %1.COP %1.FBK -User usuario -Password senha
@if errorlevel = 1 goto erro


echo ***
echo *** banco de Dados Copiado!!!
echo ***
goto fim

:erro
echo ***
echo *** ERRO AO TENTAR COPIAR O banco DE DADOS
echo ***
:errocopia
echo ***
echo *** ERRO AO TENTAR COPIAR O ARQUIVO
echo ***

:fim

PAUSE

Minhas dúvidas aqui seriam como tratar esses @if errorlevel, como executar os comandos copy (comando do Windows), gfix e gbak (executáveis que eu tenho) e como capturar sua saída e como receber parâmetros.

O echo é só substituir pelo print.

 

Estava pensando em fazer métodos e trabalhar chamando-os pois não quero usar goto (nem sei se o python tem isso).

 

No futuro gostaria de implementar uma interface gráfica, gostaria de sugestões de estudo para isso.

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode utilizar o módulo subprocess p/ executar os comandos:
https://pythonadventures.wordpress.com/2013/03/03/execute-command-show-its-output-get-its-exit-code/

Quanto aos erros, eu colocaria um if dentro de um try-catch:

 

 

try:
   processo = subprocess.Popen(shlex.split("copy banco.FDB banco.COP /z"), stdout=PIPE)
   processo=communicate()
   exit_code= processo.wait()
   if exit_code: raise Exception("Erro ao copiar banco")
catch Exception e:
   print e.message


Procure por Dive Into Python se quiser ler online. De livro eu conheço o Learning Python e o Programming Python.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço, teria alguma GUI sugerida?

Já ouvi falar que python é compatível com GTK, também ouvi falar sobre o Tkinter e o wxPython.

O que diria sobre estes?

--------------- EDIT -------------------
Testando o programa solicitado, ele só cai na opção da Exception. Obs.: no lugar de catch usei except e não é possível definir o nome da exception.

def teste():
	print("Executando o utilitário Python")
	
	cmd = "copy teste.txt teste.cop /z"
	
	print(cmd)
	
	try:
		process = Popen(shlex.split(cmd), stdout=PIPE)
		process.communicate()
		exit_code = process.wait()
		if exit_code: raise Exception("Erro ao copiar banco.")
	except Exception:
		print("O comando não pode ser executado")
	
teste() 

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.