Cuando ejecuto esto
file_path = convertfilepath("$temp/x.bat","windows");
savetextfile(file_path, "dir\!n");
rp = RunProgram( Executable( "cmd.exe" ),
Options( {"/C", file_path} ),
ReadFunction("text") // returns all text
);parece que el directorio de trabajo para la ejecución del archivo bat es mi directorio de escritorio. Creo que Python usará el directorio de trabajo para encontrar el nombre del archivo en la línea de comando también. Usar el nombre completo de la ruta parece una buena opción.
https://superuser.com/questions/396394/how-do-i-set-an-executables-working-directory-via-the-command-line-antes-de-ex sugiere que puede especificar el directorio de trabajo en su comando de inicio:
START /D c:\temp notepad.exe
Tengo un problema que debería estar relacionado con las llamadas anidadas que estoy haciendo.
EjecutarPrograma() --> cmd --> Python
El siguiente archivo bat funciona perfectamente bien.
set JMP_PYTHON_PTH=%UserProfile%\miniconda_JMP\
CALL %JMP_PYTHON_PTH%\Scripts\activate.bat %JMP_PYTHON_PTH%
start /B /wait "" python test.py
Y, sin embargo, cuando uso RunProgram(), el código falla a menos que agregue la ruta absoluta al archivo de Python (test.py --> 'C:/a/b/c/test.py')
ClearLog();
file_path = ConvertFilePath( "./tests/run_python_installation_test.bat", windows);
rp = RunProgram( Executable( "cmd.exe" ),
Options( {"/C", file_path} ),
ReadFunction("text") // returns all text
);El error que recibo, nuevamente solo si no se proporciona la ruta absoluta, es el siguiente.
(base) C:\WINDOWS\system32>start /B /wait \!"\!" python test.py
python: can't open file 'test.py': [Errno 2] No such file or directory