• Publicidad

Cambios de directorios con chdir

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cambios de directorios con chdir

Notapor Chascarrilla » 2012-11-29 10:15 @468

¡¡Hola!!

Estoy tratando de cambiar de directorio con el comando "chdir", pero sin embargo se queda pegado el directorio ejecutado la primera vez. ¿Me podrían ayudar a ver qué tengo mal en el código? Gracias.

Se lee un archivo línea por línea, primero se ejecuta un bat y luego si se ejecutó bien se debe cambiar al directorio que se cargó de la línea del archivo para compilar.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $fileCompile = $ENV{'CC_RUNSCRIPTS'} . "\\Lista_CP_Temp.txt";
  2.     $str         = "D:\\Apl\\Sum\\V5.5.0";
  3.  
  4.     open( ARCHIVO, "$fileCompile" ) or die("No es posible abrir el Archivo del reporte de compilacion!!!");
  5.     @raw_data = <ARCHIVO>;
  6.     foreach (@raw_data) {
  7.         $linea = $_;
  8.  
  9.         $rutaRS = "D:\\Apl\\Sum\\RunScripts";
  10.         $rutaCP = "$str\\$linea";
  11.         chdir("$rutaRS");
  12.  
  13.         $salida = `     echo %CD%`;
  14.         print "\n salida rutaRS: $salida\n";
  15.  
  16.         if ( $? != 0 ) {
  17.             Error("No se cargo la ruta $rutaRS");
  18.         }
  19.         else {
  20.             $salida = `env.bat 2>&1`;
  21.             print "\n salida env.bat: $salida\n";
  22.             if ( $? != 0 ) {
  23.                 Error("No se ejecuto env.bat !!!");
  24.             }
  25.             else {
  26.                 print "\n Correct!\n";
  27.  
  28.                 chdir("$rutaCP");
  29.                 print "\n NO SE PUEDE CAMBIAR AL DIRECTORIO: $rutaCP   : $! ";
  30.                 $salida2 = `echo %CD%`;
  31.                 print "\n salida2: $salida2\n";
  32.             }
  33.         }
  34.  
  35.     }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Este es el log
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
LOG      salida rutaRS: D:\Apl\Sum\RunScripts
LOG      salida env.bat:
LOG     D:\Apl\Sum\RunScripts>set SUMDBCLIENTV=101
LOG     Setting environment for domain gea11_63SP4
LOG     Setting environment for using Microsoft Visual Studio 2005 x86 tools.
LOG      Correct!
LOG    
LOG      NO SE PUEDE CAMBIAR AL DIRECTORIO: D:\Apl\Sum\V5.5.0\client\bdb_dev\src\App\Reports\Inf_SolvenciaTestBF
LOG        : Bad file descriptor
LOG      salida2: D:\Apl\Sum\V5.5.\client\bdb_dev\src\App\Reports\Inf_SolvenciaTestBF
        RESULT  0 (0)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-11-29 10:57 @498, editado 1 vez en total
Razón: Formateado de código con Perltidy y poner marcas Perl
Avatar de Usuario
Chascarrilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-07-19 10:01 @459

Publicidad

Re: Cambios de directorios con chdir

Notapor explorer » 2012-11-29 11:47 @532

Yo veo una diferencia... en un directorio aparece V5.5.0, pero en el otro aparece V5.5. (falta el '0' final).

Un consejo: en Windows se puede usar '/' como separador de directorios, al igual a como se hace en Linux/UNIX.

Así, no necesitas escribir cosas como
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $str         = "D:\\Apl\\Sum\\V5.5.0";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
si no que lo puedes escribir así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $str         = 'D:/Apl/Sum/V5.5.0';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
queda más claro y te libras del problema de tener que acordarte de "escapar" barras diagonales inversas.

Recuerda que puedes comprobar el resultado de la ejecución de chdir(), para comprobar si ha conseguido hacer el cambio de directorio, o no:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if (not chdir $rutaCP) {
  2.     print "\n NO SE PUEDE CAMBIAR AL DIRECTORIO: $rutaCP   : $! ";
  3.     print "\n CD = ", `echo %CD%`, "\n";
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De todas maneras, fíjate que después del chdir() de la línea 28, siempre sacas el mensaje de error...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cambios de directorios con chdir

Notapor Chascarrilla » 2012-11-29 13:40 @611

¡¡¡Hola!!!

Muchas gracias por tu ayuda, ya logré que se pueda cambiar de directorio.

Cordialmente,

Chascarrilla.
Avatar de Usuario
Chascarrilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-07-19 10:01 @459


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron