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.
[SOLUCIONADO] Ejecutar comando con Windows 7
[SOLUCIONADO] Ejecutar comando con Windows 7
Última edición por jesss el 20 Nov 2012, 18:36, editado 1 vez en total.
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Ejecutar comando con Windows 7
¿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.
$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)
Re: Ejecutar comando con Windows 7
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 :)
----------------------------
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.
- 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
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....'
¿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)
Re: [SOLUCIONADO] Ejecutar comando con Windows 7
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.
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....'
- 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
¡¿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:
Me muestra C:\Archivos de programa\hola
Con MsgBox(0, "", "%ProgramFiles%\hola") también funciona.
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)
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)