Ejecutar un Batch, pero en la macro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Ejecutar un Batch, pero en la macro

Mensaje por Longi »

Buenas!
Tengo una base de datos multiusuario que, para abrir precisa de un archivo ".bat" que hay que personalizar, según sea la base de datos, dónde esté y dónde quieras mantener los datos.
El asunto es que en la corporación en la que estoy han metido un antivirus que no me permite la llamada al .bat, así que pensé que si quedaba la llamada al servidor en la propia macro de arranque quizá obviase ese filtro del antivirus.
Sé que es posible poner en basic el código suficiente para hacer lo mismo que el .bat, pero se me está complicando bastante, así que una ayudita sería de agradecer.
El .bat tiene este código:

Código: Seleccionar todo

@echo off
REM Place this file and server.STOP.bat in your 'database' subfolder

REM Set hsqldb=2 below when running HSQLDB 2.x, and set the jarpath under :CONTINUE below to reflect the full path to hsqldb.jar

set hsqldb=2

REM Edit javapath= below to reflect the sub-path of your Java.exe file...
REM Edit jarpath= below to reflect the sub-path of your hsqldb.jar file...

set javapath=Java\jre1.8.0_241\bin\Java.exe

REM set jarpath=OpenOffice.org 3\Basis\program\classes\hsqldb.jar
REM set jarpath=LibreOffice 4\program\classes\hsqldb.jar

IF EXIST "%PROGRAMFILES(X86)%" GOTO Win64

:Win32
set javapath=%PROGRAMFILES%\%javapath%
set jarpath=%PROGRAMFILES%\%jarpath%
GOTO CONTINUE

:Win64
set javapath=%PROGRAMFILES(X86)%\%javapath%
set jarpath=%PROGRAMFILES(X86)%\%jarpath%

:CONTINUE
REM Set hsqldb=2 above when running HSQLDB 2.x, and set the jarpath below to reflect the full path to hsqldb.jar
IF %hsqldb%==1 GOTO FINISH

Set jarpath=C:\Users\pablo\Desktop\Registro_Laboratorio_Casa\driver\hsqldb.jar

:FINISH
REM Edit the Base front-end .odb name below as necessary
REM Edit the database name...currently "mydb"...within the server startup string below as necessary
REM remove ';shutdown=true' from the startup string below in multi-user environments to avoid automatic shutdown upon closing all Base sessions
rem "%javapath%" -cp "%jarpath%" org.hsqldb.Server -database.0 file:mydb;hsqldb.default_table_type=cached;shutdown=true

echo "%javapath%" -cp "%jarpath%" org.hsqldb.Server -database.0 file:C:\Users\pablo\Desktop\Registro_Laboratorio_Casa\DATABASE;hsqldb.default_table_type=cached
"%javapath%" -cp "%jarpath%" org.hsqldb.Server -database.0 file:C:\Users\pablo\Desktop\Registro_Laboratorio_Casa\DATABASE\Laboratorio;hsqldb.default_table_type=cached

rem pause
exit
Sé que el código debe ir algo así:

Código: Seleccionar todo

xShell = createUnoService("com.sun.star.system.SystemShellExecute")
xShell.execute(XXXXXXXXXXXXXXXXXXXXXXXXXXXXX,"",0)
El problema es meter en las XXXXXXXXXXXXXXX el código para que haga lo mismo que el .bat 'independiente'.
La personalización del código para las rutas no sería problema ( o mucho problema), pero lo otro es el problema.

Gracias por leerlo.

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Ejecutar un Batch, pero en la macro

Mensaje por Longi »

Buenas!
Sigo avanzando, pero como un elefante en una cacharrería:
En el código del .bat hay una línea con la orden echo, que hace que después aparezca en la pantalla. Lo que he conseguido hasta ahora creo que no son más que palos de ciego, ya que sí que abro la consola, pero no en cmd ni consigo que aparezca el texto de la línea echo:

Código: Seleccionar todo

echo "%javapath%" -cp "%jarpath%" org.hsqldb.Server -database.0 file:C:\Users\pablo\Desktop\Registro_Laboratorio_Casa\DATABASE;hsqldb.default_table_type=cached
Alguien sabe cómo conseguirlo con basic?
Gracias!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
mriosv
Mensajes: 2334
Registrado: Sab Dic 27, 2008 1:12 am
Ubicación: Galiza (España)

Re: Ejecutar un Batch, pero en la macro

Mensaje por mriosv »

¿No te será más sencillo crear el bat desde basic y después ejecutarlo?
Puedes usar "Subir adjunto" en Respuesta rápida - Editor Completo - Pestaña Subir adjunto
Apache OpenOffice 4, LibreOffice (Win10x64)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Ejecutar un Batch, pero en la macro

Mensaje por Longi »

Gracias por la pregunta

Aquí es donde se ve el nivel de la gente, y el mio queda a la altura del barro:
Sé que existen los .bat, pero ni sé cómo se hacen ni cómo se manejan. Mucho menos generarlo en basic ( o qué es lo que quiere decir todo esto ).
Yo quería usar otro modo de abrir el servidor para evitar el antivirus, pero es evidente que no sé por dónde las pego.
Si me puedes echar una mano indicándome alguna cosilla se agradecería, después ya sigo invetigando ( o preguntando ).

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Responder