Cambiando el directorio de trabajo al usar la función exec en Rascal.
Estoy ejecutando un comando en Rascal en Windows 10 (algun archivo por lotes) que funciona bien en sí mismo:
import util::ShellExec;
exec("algunalinea.bat");
Este archivo por lotes realiza algunas lecturas y escrituras de archivos en el directorio de trabajo actual. A través de algunas pruebas de depuración, he descubierto que el directorio de trabajo predeterminado (|cwd:///|
) es C:\Program Files\Eclipse
y este directorio requiere derechos elevados para poder escribir en él. Estoy tratando de cambiar el directorio de trabajo al ejecutar el comando de la siguiente manera:
exec("algunalinea.bat", |tmp:///|);
He intentado muchas variaciones de directorios, pero todas producen un error de CallFailed sin muchos detalles.
¿Cómo puedo ejecutar un comando en un directorio de trabajo diferente?
davy.ai
Para ejecutar un comando en un directorio de trabajo diferente en Rascal en Windows 10, puedes usar el módulo
util::ShellExec
y proporcionar el directorio de trabajo deseado como un argumento opcional a la funciónexec
.Por ejemplo, para cambiar el directorio de trabajo a
C:/Users/MyUser/MyDirectory
antes de ejecutarsomecommand.bat
, puedes usar el siguiente código:El argumento
|cwd:///|
especifica el directorio de trabajo actual (que se desea cambiar), y el argumento|fs:///C:/Users/MyUser/MyDirectory|
especifica el nuevo directorio de trabajo deseado.Asegúrate de usar barras diagonales hacia adelante en la ruta del directorio, y de incluir la letra de la unidad (por ejemplo,
C:/
).Si el directorio especificado no existe o el usuario actual no tiene permisos para acceder a él, es posible que aún encuentres errores. En esos casos, es posible que debas verificar la ruta del directorio y ajustar los permisos según sea necesario.