Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta script. Mostrar todas las entradas
Mostrando entradas con la etiqueta script. Mostrar todas las entradas

sábado, 28 de abril de 2018

Python: ejemplo de paso de parametros y creacion de directorios y archivos.


Python: ejemplo de paso de parámetros y creación de directorios y archivos.

Os dejo un pequeño script en python, que hace:
-Leer los parametros que le pasamos en la linea de comandos
-Si tiene más de un parametro (el nombre del programa cuenta), entonces con el 2º parametro crea un directorio, llamado como el 2º parametro.
-Luego dentro del nuevo directorio crea un fichero con el mismo nombre.

Script:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#crear un directorio conel nombre del parametro pasado y dentro de ese nuevo directorio
#crea un archivo con el mismo nombre
import sys
import os

print "Numero de parametros: ", len(sys.argv)
print "Lista de argumentos: ", sys.argv
valor=len(sys.argv)
if valor>1:
     os.mkdir(sys.argv[1])
     f = open ( os.getcwd() + "/" + sys.argv[1] + "/"+ sys.argv[1],'w')
     f.close()

Video explicativo:


fuentes:









domingo, 22 de abril de 2018

Script en gambas3


Script en gambas3


Con gambas3, podemos realizar ademas de aplicaciones gráficas, y para terminal, también podemos crear script para ejecutarlos en la terminal rápidamente. Para ello tenemos que:


1º Instalar el paquete gambas3-script:
$ sudo apt-get install gambas3-script
Podemos ver la ayuda de gambsa3-script usando el parametro --help:
 $ gbs3 --help
Compile and execute a Gambas script.
Usage: gbs3 [options] [<script file>]
Options:
  -u              force components loading ('comp1,comp2...')
  -e              execute the source code provided by the command line ( ':' separator )
  -c --nocache    force the script compilation (do not check cache)
  -v --verbose    be verbose
  -f --fast       use just-in-time compiler
  -V --version    display version
  -L --license    display license
  -h --help       display this help
Para crear un script os dejo un ejemplo:
2º  Crear un archivo de texto "script.gbs" donde en la primera linea escribiremos la siguiente linea:
#!/usr/bin/env gbs3

3º Despues podemos ya programar en gambas.
dim texto as string= "hola mundo"
Print texto


4º El archivo creado, le pondremos permisos de ejecucion:
$ chmod +x script.gbs

Y ya podremos ejecutarlo.

$./script.gbs

Os dejo un ejemplo con funciones y subrutina principal Main:
#!/usr/bin/env gbs3
public function presentacion(a as string)
dim i as integer
for i=1 to 10
   print i,a
next
end
public sub Main()
        dim texto as string="hola mundo"
presentacion(texto)
end
Ejemplo de descarga: alojado en google drive

fuente:
 (ejemplos de gambas2)
https://es.wikibooks.org/wiki/Gambas/Scripting_con_Gambas

miércoles, 20 de septiembre de 2017

[Truco] Como convertir varios documentos .doc en .pdf



[Truco] Como convertir varios .doc en .pdf

Desde hace tiempo MS Word tiene la función de "guardar como" en formato .PDF, pero ¿que pasas si tienes muchos archivos .DOC y los tienes que convertir a PDF? ¿que hay que hacerlo uno a uno? ¿se podría hacer de una manera automática y todos a la vez? Linux al rescate....

Este es el problema que me he encontrado esta mañana, ya que tengo un CD con cientos de archivos MS Word (.doc) y los tengo que convertir en PDF.  Encontré internet varias páginas que lo convertían "online", pero o tenia que ir uno a uno o tenía que registrarme. Al final no me convencía la idea, y me fui a hacerlo con gnu/linux, con la consola Bash, con un pequeño script.

Me cree el siguiente script:
for archivoActual in $(ls *.DOC);do  unoconv -f pdf $archivoActualdone
Lo que hace es:
A todos los archivo terminados en la extensión .DOC del directorio donde se encuentre el script, le va a aplicar el comando unoconv, creando un fichero con el mismo y con la extensión .PDF

Como veis usa el comando unoconv, que se encarga de la conversión, os dejo el enlace donde se explica con más detalle sus opciones:
https://docs.moodle.org/all/es/Universal_Office_Converter_(unoconv)

Para instalar unoconv, por si no lo teneis:
sudo apt-get install unoconv

Notas:

  • Para aplicar el script, tuve que darle permisos de ejecución y crear una carpeta temporal en mi directorio de linux donde copiaba los ficheros .DOC y ejecutaba en el script. 
  • Algunos nombres de ficheros .DOC, los renombre, por ejemplo, les quite los espacios, sustituyéndolos por guion bajo "_", para que el script funcionara sin problemas.
  • Como linux distingue entre mayúsculas y minúsculas, si la extensión del fichero fuera .doc (y no .DOC), el script cambiaría a:
for archivoActual in $(ls *.doc);do  unoconv -f pdf $archivoActualdone


Os dejo el enlace de descarga del script: https://goo.gl/C76uuF

Saludos

domingo, 22 de enero de 2012

Calculadora de Expresiones en Gambas: usando script realizados en Gambas


Calculadora De Expresiones


Este es un ejemplo de como realizar una calculadora de expresiones. He usado un script en gambas. Con gambas también podemos hacer script para ejecutarlo en la terminal.
Podeis ver más información en la siguiente pagina: Scripting_con_Gambas


Esta es una captura del programa funcionando:



Este es el enlace de descarga del código fuente:  calculadora-0.0.1.tar.gz




El programa es muy simple:

Tiene un archivo tipo ".gbs" (el script):
#!/usr/bin/env gbs2
DIM a,b,c,x,y AS float
a=<a>
b=<b>
c=<c>
x=<x>
y=<y>
PRINT <formula>


que es copiado al disco duro y modificado por las siguientes funciones:
' Gambas module file
PUBLIC FUNCTION ecuacion(expresion AS String, OPTIONAL a AS String, OPTIONAL b AS String, OPTIONAL c AS String, OPTIONAL x AS String, OPTIONAL y AS String) AS String
    DIM cadena AS String
    DIM comando AS String
    DIM valor AS String
    TRY KILL User.home & "/programa.gbs"
    COPY "programa.gbs" TO User.home & "/programa.gbs"
    cadena = File.Load(User.home & "/programa.gbs")
    IF a <> NULL THEN
          cadena = Replace(cadena, "<a>", var.ConvierteComaaPto(a))
      ELSE
          cadena = Replace(cadena, "<a>", "0")
    ENDIF

    IF b <> NULL THEN
      cadena = Replace(cadena, "<b>", var.ConvierteComaaPto(b))
    ELSE
      cadena = Replace(cadena, "<b>", "0")
    ENDIF
    IF c <> NULL THEN
      cadena = Replace(cadena, "<c>", var.ConvierteComaaPto(c))
    ELSE
      cadena = Replace(cadena, "<c>", "0")
    ENDIF
 
    IF x <> NULL THEN
      cadena = Replace(cadena, "<x>", var.ConvierteComaaPto(x))
    ELSE
      cadena = Replace(cadena, "<x>", "0")
    ENDIF
   
    IF y <> NULL THEN
      cadena = Replace(cadena, "<y>", var.ConvierteComaaPto(y))
    ELSE
      cadena = Replace(cadena, "<y>", "0")
    ENDIF

    cadena = Replace(cadena, "<formula>", expresion)

    File.Save(User.home & "/programa.gbs", cadena)
    WAIT 0.1
    EXEC ["chmod", "777", User.home & "/programa.gbs"] WAIT
    EXEC [User.home & "/./programa.gbs"] TO valor
    IF valor <> "" THEN
           RETURN Replace(valor, "\n", "")
    ENDIF
   Message.Info("Posible error en en la expresión, o al realizar la operación")
   RETURN 0
END


PUBLIC FUNCTION ConvierteComaaPto(cadena AS String) AS String
 
  RETURN Replace(cadena, ",", ".")
 
END

En el formulario principal:

' Gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
ME.Center
END

PUBLIC SUB ToolButtonCalcular_Click()
DIM lista AS String

 TextBoxResultado.text = var.ecuacion(TextBoxExpresion.text, ValueBoxA.value, ValueBoxB.Value, ValueBoxC.value, ValueBoxX.value, valueboxy.value)

lista = Str$(ListViewExpresiones.Count + 1)

ListViewExpresiones.Add(lista, TextBoxExpresion.text & " = " & TextBoxResultado.text)
END

Nota:

Gambas tiene un componente gb.eval, que es usado expresamente para evaluar expresiones. Podéis ver el ejemplo que trae de Calculadora, para verlo como se usa.