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)
:DIGITAR_PEDIDO
TITLE DIGITAR PEDIDO&CLS
ECHO.
SET "PRODUCTO_="
SET "CANTIDAD_P="
SET /P "PRODUCTO_=Producto: "
IF NOT DEFINED PRODUCTO_ (ECHO.&ECHO. Ingrese producto.-&ECHO.&PAUSE >NUL 2>&1&GOTO :DIGITAR_PEDIDO)
IF /I "%PRODUCTO_%"=="copiar" (
CLIP.exe < PEDIDO_DIGITADO_.txt
GOTO :INICIO
)
SET /P "CANTIDAD_P=Cantidad: "
IF NOT DEFINED CANTIDAD_P (ECHO.&ECHO. Ingrese Cantidad.-&ECHO.&PAUSE >NUL 2>&1&GOTO :DIGITAR_PEDIDO)
SET "ESPACIO_= "
ECHO %PRODUCTO_%%ESPACIO_%%CANTIDAD_P%>> PEDIDO_DIGITADO_.txt
GOTO :DIGITAR_PEDIDO
Entonces el problema es el siguiente;
Por ejemplo si digito lo siguiente:
Producto : 178282
Cantidad : 1
Escribe solo 178282.
Pero si escribo;
Producto : 178282
Cantidad : 10
Escribe los valores como corresponde (que es como yo quiero que quede en el .txt):
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:
ECHO %PRODUCTO_%>> PEDIDO_DIGITADO_.txt
ECHO %CANTIDAD_P%>> PEDIDO_DIGITADO_.txt
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 :)
¿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.
setlocal enabledelayedexpansion
:PEDIDO
TITLE DIGITAR PEDIDO
CLS
ECHO.
SET /P "PRODUCTO=Producto: "
IF NOT DEFINED PRODUCTO (
GOTO:PEDIDO
)
IF /I "%PRODUCTO_%"=="copiar" (
CLIP.exe < PEDIDO_DIGITADO_.txt
GOTO:INICIO
)
:CANTIDAD
SET /P "CANTIDAD=Cantidad: "
IF NOT DEFINED CANTIDAD (
GOTO:CANTIDAD
)
ECHO !PRODUCTO!!ESPACIO_!!CANTIDAD!>> PEDIDO_DIGITADO_.txt
GOTO :PEDIDO
=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 ^^
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
Ok gracias pi
Cita de: pitoloko 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
Gracias pitoloko por el dato, a ver si de una vez aprendo a usar el famoso comando xDD
Saludos :)