PDA

Ver la Versión Completa : problema al ejecutar un bat para descomprimir archivo


vicvil
23-11-2021, 13:35:57
Estimados, requiero de su ayuda para resolver un problema que se me presenta al descomprimir un archivo usando un archivo bat que llama a rar.exe. El problema es que al ejecutar el bat directamente en windows funciona sin problema, pero cuando lo llamo desde un programa Delphi en Win 10 me aparece el error "El programa o caracteristica \??\C:\ruta\Rar.exe no se puede iniciar porque no es compatible con versiones de 64 bits" y en Win XP me arroja el mensaje "Programa demasiado extenso para colocarlo en memoria", pero como dije al ejecutar directamente el archivo bat descomprime sin problema.
Para llamar al bat desde delphi lo hago de la siguiente forma y que me ha resultado en otras ocasiones:

ShellExecute(Handle, 'open', PChar('cmd'), PChar('/c ' + path + archivo.bat), nil, SW_SHOWNORMAL)

y el archivo bat tiene lo siguiente:

@echo off
cls
rar x -ppassword -y C:\ruta\archivo.rar C:\ruta
close

ojalá puedan darme una idea de donde está el problema, gracias

newtron
24-11-2021, 09:39:15
Hola.


Revisa que no estés usando otro rar.exe que puedas tener por ahí porque suena extraño eso que cuentas.


Saludos

aledieb
25-11-2021, 19:02:03
Hola, probaste sin el " '/c ' + "

ShellExecute(Handle, 'open', PChar('cmd'), PChar( path + archivo.bat), nil, SW_SHOWNORMAL)

delphi.com.ar
25-11-2021, 20:06:10
¿Porqué no ejecutar directamente el RAR?


ShellExecute(Handle, 'open', PChar('rar.exe'), PChar('-ppassword -y C:\ruta\archivo.rar C:\ruta'), nil, SW_SHOWNORMAL);


Obviamente incrustando las rutas necesarias, tanto para el archivo como para la ubicación del ejecutable.

vicvil
01-12-2021, 20:47:38
Estimados, disculpen la demora en contestar.
Al final tuve que cambiar los archivos a zip en vez de rar y usar los componentes de TurboPower Abbrevia (AbUnZipper), pues no pude hacer funcionar la descompresión del rar.exe.
De todas formas este componente me sirvió para hacer todo lo que necesitaba incluso con password incluido.

Gracias