Jump to content

Archived

This topic is now archived and is closed to further replies.

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á.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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() 

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.