es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  

Answer

  1. Avatar for 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ón exec.

    Por ejemplo, para cambiar el directorio de trabajo a C:/Users/MyUser/MyDirectory antes de ejecutar somecommand.bat, puedes usar el siguiente código:

    import util::ShellExec;
    exec("somecommand.bat", |cwd:///|, |fs:///C:/Users/MyUser/MyDirectory|);
    

    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.

Comments are closed.