Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: FranciskoAsdf en 31 Marzo 2011, 17:53 pm



Título: [Solucionado][BATCH]Problema con escritura en archivo.
Publicado por: FranciskoAsdf en 31 Marzo 2011, 17:53 pm
Hola, (de nuevo u.u), saludos.

Os vengo a molestar de nuevo porque ahora si que no sé que pasa o porque pasa lo que me pasa XDDDDD

Lo que pasa ( xDD ) es que tengo el siguiente trozo de script que por alguna razon no funciona como debería.

Código (CarroLleno.bat)
Código
  1. :DIGITAR_PEDIDO
  2. TITLE DIGITAR PEDIDO&CLS
  3. SET "PRODUCTO_="
  4. SET "CANTIDAD_P="
  5. SET /P "PRODUCTO_=Producto: "
  6. IF NOT DEFINED PRODUCTO_ (ECHO.&ECHO. Ingrese producto.-&ECHO.&PAUSE >NUL 2>&1&GOTO :DIGITAR_PEDIDO)
  7. IF /I "%PRODUCTO_%"=="copiar" (
  8. CLIP.exe < PEDIDO_DIGITADO_.txt
  9. GOTO :INICIO
  10. )
  11. SET /P "CANTIDAD_P=Cantidad: "
  12. IF NOT DEFINED CANTIDAD_P (ECHO.&ECHO. Ingrese Cantidad.-&ECHO.&PAUSE >NUL 2>&1&GOTO :DIGITAR_PEDIDO)
  13. SET "ESPACIO_= "
  14. ECHO %PRODUCTO_%%ESPACIO_%%CANTIDAD_P%>> PEDIDO_DIGITADO_.txt
  15. GOTO :DIGITAR_PEDIDO

Entonces el problema es el siguiente;
Por ejemplo si digito lo siguiente:

Código:
Producto : 178282
Cantidad : 1

Escribe solo 178282.

Pero si escribo;

Código:
Producto : 178282
Cantidad : 10

Escribe los valores como corresponde (que es como yo quiero que quede en el .txt):

Código:
178282		10

En definitiva, solo "escribe" los valores de la variable si son mayores a 9.
Si pongo por ejemplo el codigo de escritura asi:

Código
  1. ECHO %PRODUCTO_%>> PEDIDO_DIGITADO_.txt
  2. ECHO %CANTIDAD_P%>> PEDIDO_DIGITADO_.txt
  3.  

Ocurre exactamente lo mismo.

Estoy corriendo el script en Windows XP SP3 (por si es relevante :S)

PD: La variable %ESPACIO_% es necesaria, porque el contenido lo copio a SAP y SAP me pide ese espacio, si no, copia mal los datos.

Espero alguien me pueda ayudar, ya que no tengo idea porque pasa eso si no hago ninguna operación.

No llamo variables ni datos de otra parte del código.

Por favor, necesito saber como puedo solucionar esto o porque pasa por lo menos xDDD


Saludos y muchas gracias de ante mano :)


Título: Re: [BATCH]Problema con escritura en archivo.
Publicado por: leogtz en 31 Marzo 2011, 22:53 pm
¿Y la etiqueta :INICIO?

¿porque no haces lo que te recomiendo?, porque el afán de poner varias sentencias en una sola línea?

Prueba esto a ver si funciona.


Código
  1. setlocal enabledelayedexpansion
  2. :PEDIDO
  3. TITLE DIGITAR PEDIDO
  4. CLS
  5. SET /P "PRODUCTO=Producto: "
  6. IF NOT DEFINED PRODUCTO (
  7. GOTO:PEDIDO
  8. )
  9.  
  10. IF /I "%PRODUCTO_%"=="copiar" (
  11. CLIP.exe < PEDIDO_DIGITADO_.txt
  12. GOTO:INICIO
  13. )
  14. :CANTIDAD
  15. SET /P "CANTIDAD=Cantidad: "
  16. IF NOT DEFINED CANTIDAD (
  17. GOTO:CANTIDAD
  18. )
  19. ECHO !PRODUCTO!!ESPACIO_!!CANTIDAD!>> PEDIDO_DIGITADO_.txt
  20. GOTO :PEDIDO
  21.  


Título: Re: [BATCH]Problema con escritura en archivo.
Publicado por: FranciskoAsdf en 31 Marzo 2011, 23:56 pm
=O!, Funciona a la perfección, pero era solo por las sentencias en una sola linea? o igual influía lo de "setlocal enabledelayedexpansion"??.

Y la etiqueta :INICIO va al principio del script después de copiar :)

Aun así nunca había tenido problemas con escribir varias sentencias en una sola linea :S.

Muchas gracias Leo nuevamente por tu ayuda =)


Deberias (algun dia) explicar lo de setlocal enabledelayedexpansion xDDD, aun no entiendo  bien como funciona xDD


Pero bueno, muchas gracias de nuevo ^^


Título: Re: [Solucionado][BATCH]Problema con escritura en archivo.
Publicado por: SuperDraco en 1 Abril 2011, 02:53 am
creeme yo antes era como tu, ponía todas las sentencias en una linea...
Luego Leo me reectificó un code y desde entonces me di cuenta que era mucho mejor hacerlo así, a la hora de editar/buscar fallos en el script es MUCHISIMO más cómodo, y todo...no tiene comparación. Te recomiendo que a partir de ahora no sigas las malas costumbres.


Sobre el enabledelayedexpansion, para entenderlo mejor debes ponerlo en práctica, mirate estos ejemplos:
http://www.portalhacker.net/index.php/topic,81128.0.html


Título: Re: [Solucionado][BATCH]Problema con escritura en archivo.
Publicado por: FranciskoAsdf en 1 Abril 2011, 14:55 pm
Ok gracias pi
creeme yo antes era como tu, ponía todas las sentencias en una linea...
Luego Leo me reectificó un code y desde entonces me di cuenta que era mucho mejor hacerlo así, a la hora de editar/buscar fallos en el script es MUCHISIMO más cómodo, y todo...no tiene comparación. Te recomiendo que a partir de ahora no sigas las malas costumbres.


Sobre el enabledelayedexpansion, para entenderlo mejor debes ponerlo en práctica, mirate estos ejemplos:
http://www.portalhacker.net/index.php/topic,81128.0.html

Gracias pitoloko por el dato, a ver si de una vez aprendo a usar el famoso comando xDD

Saludos :)