[SOLUCIONADO] Ejecutar comando con Windows 7

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
jesss
Mensajes: 12
Registrado: 28 Ene 2011, 18:07

[SOLUCIONADO] Ejecutar comando con Windows 7

Mensaje por jesss »

Hola,

Intento hacer crear un rar de la carpeta del escritorio desde Windows 7. Con el comando en XP no he tenido problemas, pero a la hora del Windows 7 me sale siempre el error:
"El sistema no puede encontrar la ruta especificada" cuando lo ejecuto con:
RunWait(@ComSpec&' /k '&$command_rar,"") para que se vea la pantalla de comandos.


$dir_backup='d:\temp\Backup';
$dir_origen1='%USERPROFILE%\Desktop';W7
$name_rar='backup.rar'
$espacio_max=50*1048576

$command_rar=' ""%ProgramFiles%\WinRAR\rar.exe"" a -ef -ed -ep1 -sl'&$espacio_max&'B -x*.lnk -x*.ini '&$dir_backup&'\'&$name_rar&' '&$dir_origen1&' '
RunWait(@ComSpec&' /k '&$command_rar,"")


Creo que es alguna cosa debido a las comillas simples y las dobles, según había visto en algún mensaje del foro, pero he estado probando combinaciones y no soy capaz de dar con la adecuada.

¿Alguien puede ser más específico para ver dónde me está fallando?

Gracias a todos.
Última edición por jesss el 20 Nov 2012, 18:36, editado 1 vez en total.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ejecutar comando con Windows 7

Mensaje por Ximorro »

¿No será por doblar las comillas dobles en
$command_rar=' ""%ProgramFiles%\WinRAR\rar.exe"" a.....?

Debería ser
$command_rar=' "%ProgramFiles%\WinRAR\rar.exe" a...?

Se doblan las comillas si pones el string entre las mismas comillas. Por ejemplo
$a = "Esto ""está"" entre comillas"

Pero si se usan simples no hace falta, eso es lo bueno:
$a = 'Esto "está" entre comillas'

También se puede hacer al revés, si necesitas comillas simples dentro de la cadena, pones ésta entre comillas dobles y así no hay que doblar lo de dentro.

Si después de todo este rollo no es eso, asegúrate de que W7 te está dando las carpetas adecuadas para las macros de directorios. Piensa que por ejemplo "Archivos de programa" tiene versiones para programas de 64 bits y 32 bits, pero no sé si AutoIt contempla eso.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jesss
Mensajes: 12
Registrado: 28 Ene 2011, 18:07

Re: Ejecutar comando con Windows 7

Mensaje por jesss »

Hola,

Cuando hago esto:

$command_rar=' "%ProgramFiles%\WinRAR\rar.exe" a...?

me sale lo de:

"C:\Program" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutables.

Lo había probado desde la consola normal y me había funcionado, pero ahora he notado que según como la ruta
%ProgramFiles%\WinRAR\rar.exe lo mismo le da como "C:\Program Files\WinRAR" que como "C:\Program Files (x86)\WinRAR" así que he optado por poner la ruta fija y ya parece funcionar.

Así que el comando al final queda:

$command_rar=' "c:\Program Files\WinRAR\rar.exe" a -ef -ed -ep1 -sl'&$espacio_max&'B -x*.lnk -x*.ini '&$dir_backup&'\'&$name_rar&' '&$dir_origen1&' '

Lo doy ya por solucionado, y perdonad las molestias.

Muchas gracias :)



----------------------------
Ximorro escribió:¿No será por doblar las comillas dobles en
$command_rar=' ""%ProgramFiles%\WinRAR\rar.exe"" a.....?
Debería ser
$command_rar=' "%ProgramFiles%\WinRAR\rar.exe" a...?

Se doblan las comillas si pones el string entre las mismas comillas. Por ejemplo
$a = "Esto ""está"" entre comillas"

Pero si se usan simples no hace falta, eso es lo bueno:
$a = 'Esto "está" entre comillas'

También se puede hacer al revés, si necesitas comillas simples dentro de la cadena, pones ésta entre comillas dobles y así no hay que doblar lo de dentro.

Si después de todo este rollo no es eso, asegúrate de que W7 te está dando las carpetas adecuadas para las macros de directorios. Piensa que por ejemplo "Archivos de programa" tiene versiones para programas de 64 bits y 32 bits, pero no sé si AutoIt contempla eso.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: [SOLUCIONADO] Ejecutar comando con Windows 7

Mensaje por Ximorro »

Es una pena que tengas que poner el path a piñón fijo cuando puede ser calculado y así adaptarse a diferentes instalaciones.

¿Has comprobado que te esté haciendo bien la expansión de la variable de entorno? Yo mostraría la cadena $command_rar por consola o en un MsgBox a ver qué tiene, igual te llevas alguna sorpresa. Analiza bien la expansión de la variable y cómo quedan las comillas en el resultado final.

También puedes probar a usar macros en vez de la expansión de variables, por ejemplo
$command_rar='"' & @ProgramFilesDir & '\WinRAR\rar.exe" a....'
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jesss
Mensajes: 12
Registrado: 28 Ene 2011, 18:07

Re: [SOLUCIONADO] Ejecutar comando con Windows 7

Mensaje por jesss »

Con lo del @ProgramFilesDir me sale lo de "c:\Program files (x86)". Con lo del MsgBox me sale directamente lo de "%Program%Files" porque no traduce todavía la variable del sistema. Y al hacer un echo me sale también lo de c:\Program files (x86). Supongo que debe ser más trabajoso meter en el path lo de la variables, que directamente la ruta para lo del WinRAR. Al menos para los datos de usuario me lo hace bien.

Un saludo, y gracias de nuevo.

Ximorro escribió:Es una pena que tengas que poner el path a piñón fijo cuando puede ser calculado y así adaptarse a diferentes instalaciones.

¿Has comprobado que te esté haciendo bien la expansión de la variable de entorno? Yo mostraría la cadena $command_rar por consola o en un MsgBox a ver qué tiene, igual te llevas alguna sorpresa. Analiza bien la expansión de la variable y cómo quedan las comillas en el resultado final.

También puedes probar a usar macros en vez de la expansión de variables, por ejemplo
$command_rar='"' & @ProgramFilesDir & '\WinRAR\rar.exe" a....'
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: [SOLUCIONADO] Ejecutar comando con Windows 7

Mensaje por Ximorro »

¡¿Que no se expande la variable de entorno?!

Pues igual es ese el problema porque sí debe hacerlo. Las expande al asignarlas o mostrarlas. ¿Seguro que has activado la opción correspondiente? Y fíjate que pongas la variable bien, además comprueba que exista en ese sistema donde lo ejecutas y no donde lo estás programando, pues las variables de entorno te pueden cambiar de un ordenador a otro.

A mí por ejemplo esto me funciona perfectamente:

Código: Seleccionar todo

Opt("ExpandEnvStrings", 1)
ConsoleWrite("%ProgramFiles%\hola" & @LF)
Me muestra C:\Archivos de programa\hola
Con MsgBox(0, "", "%ProgramFiles%\hola") también funciona.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder