Función para ejecutar comandos unix

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • cramr
    Member
    • oct
    • 68

    #1

    Función para ejecutar comandos unix

    Muy buenas,

    Tengo que ejecutar unos comandos en unix para copiar, borrar, etc. ficheros que están en determinadas rutas.

    Otras veces he utilizado:

    CALL FUNCTION 'RZL_START_PROGRAM_REMOTE'
    EXPORTING
    cmd = fichero_origen
    cmd_arguments = fichero_destino
    EXCEPTIONS
    argument_error = 1
    send_error = 2
    OTHERS = 3.

    Donde por ejemplo si quiero mover un fichero a otra ruta, en fichero_origen pongo mv seguido de la ruta del fichero origen, y en fichero_destino la ruta destino y el nombre del fichero.

    La cuestión es que esta función internamente almacena el fichero_origen en una variable de 100 caracteres, y debido a que la ruta esta dentro de muchas carpetas y que el nombre de fichero es muy largo, pues la corta y no me lo hace.

    Alguien sabe otra función que pueda utilizar para ejecutar comandos unix???

    Y si no, al menos, alguna forma de poder borrar un fichero de una ruta unix, sin tener que utilizar esta función??? Asi intentaría copiar el fichero con un loop, y escribirlo en la ruta destino, y luego tendría que borrarlo de la ruta original.


    muchas gracias
  • ballan
    Senior Member
    • oct
    • 671

    #2
    Desde la transaccion SM49 puedes crear comandos externos para interactuar con el SO, create los comandos para mover, eliminar o lo que quieras hacer y luego esos comandos puedes ejecutarlos con la funcion
    SXPG_COMMAND_EXECUTE o SXPG_COMMAND_EXECUTE_LONG que te permite mas longtud en los parametros

    Comentario

    • cramr
      Member
      • oct
      • 68

      #3
      Al final hice esto:

      DATA: BEGIN OF itab OCCURS 0,
      line(255),
      END OF itab.

      DATA: l_unix_command(500).

      CALL 'SYSTEM' ID 'COMMAND' FIELD l_unix_command
      ID 'ITAB' FIELD itab-*sys*.


      Y en l_unix_command he puesto el comando que quiero, por ejemplo:

      'mv ruta1/fich1 ruta2/fich2'

      Gracias.

      Comentario

      Trabajando...