elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda por favor!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda por favor!!!  (Leído 4,820 veces)
Se7eN

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda por favor!!!
« en: 27 Diciembre 2017, 06:51 am »

a partir de un archivo txt q tiene un formato como este:
(precio-producto-cantidad)
---------------
0.5-CAJA-0
10-CAJA-12
20-TANQUE-5
0.50-TANQUE-2
10-LATA-1
5-CAJA-5
1-LATA-0
0.25-TANQUE-0
----------------
me gustaria incluir en mi .bat que codigo que me cree otro txt para poder imprimir que haga lo sigt con esos datos:
los ordene por precio y productos de menor precio a mayor quedando mas o menos asi:
----------------
0.5-CAJA-0
5-CAJA-5
10-CAJA-12

0.25-TANQUE-0
0.50-TANQUE-2
20-TANQUE-5

1-LATA-0
10-LATA-1
---------------
tambien pense en eliminar de la lista los productos q tuviese en 0 quedando asi
--------------
5-CAJA-5
10-CAJA-12

0.50-TANQUE-2
20-TANQUE-5

10-LATA-1
--------------
a ver mi idea era:
-leer la linea y guardarla en una variable
-analizar la linea y si tiene un producto seguido de un -0 desecharlo (esto buscando una coincidencia en la linea *CAJA-0*) BUENO ESA ERA LA IDEA
-si al analizar la linea no contiene algo igaul al ejem: CAJA-0 entonces copiarla en un txt nuevo
-organizar el txt

logre algo como esto super basico xq soy muy noob

@echo off
FOR /F %%A IN (f1.txt) DO call :proceso "%%A"
goto:EOF
:proceso
set aki=%~1
echo %aki%
pause>nul
goto:EOF

pero en adelante me perdi
Nota: mi internet lo tengo q comprar x horas ademas de q tiene un ancho de banda de menos de 1mb de navegacion y 256kb de descarga x eso no me puedo dar el lujo de investigar tanto. DIGAN HOLA A LA WIFI DE CUBA!!! jaja

Si alguien sabe como resolver esto x favor ayudeme y si lo hacen y me demoro en agradecer es q no me he conectado a revisar XD!!!


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.818



Ver Perfil
Re: Ayuda por favor!!!
« Respuesta #1 en: 28 Diciembre 2017, 18:53 pm »

En Batch no merece la pena escribir ni una sola sentencia por lo limitado que es, y en consecuencia lo engorroso que resultaría.

¿Es para ti una opción válida el uso de PowerShell?. Practicamente tienes un CSV delimitado por guiones, puedes aplicar esta solución (la parte de importar la tabla CSV):

Y el resto sería realizar una ordenación por el nombre del campo del producto.

Saludos


En línea

Se7eN

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda por favor!!!
« Respuesta #2 en: 29 Diciembre 2017, 23:31 pm »

amigo elektro gracias x responder primero q todo y feliz año nuevo de antermano. tienes mucha razon en lo que dices acerca del power shell y veo q con un poco de investigacion lograria lo que quiero mucho mas rapido que en batch pero resulta que lo que tengo es un .bat compilado a exe dentro del cual quiro incluir este codigo para mejorar mi pequeño programa, veras quiero hacer esto xq en realidad lo que quiero lograr es mandar a imprimir un txt especie a un reporte pero si organizara los datos me seria mucho mejor x eso mi insitencia en el tema que debe de ser en bath xq no se como integrar la solucion q me distes dentro de .bat, estuve revisando x ahi y hay un tema entero en el foro para hacer cosas con los txt en .bat, pero la respuesta en concreto que queria esta en ese tema lo que pasa es q me redirige hacia otro portal donde dice que el tema que busco fue borrado o algo asi SUERTE PARA MI jaja asi que tendre que implementar y darme algunos cabezasos con lo que ahi postearon x cierto muy instructivo,,, asi que de todas formas muchas gracias amigo  ;-)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.818



Ver Perfil
Re: Ayuda por favor!!!
« Respuesta #3 en: 31 Diciembre 2017, 12:32 pm »

lo que tengo es un .bat compilado a exe

El código Batch no es lenguaje de programación ni es algo que se le pueda atribuir la propiedad de ser compilable; ese tipo de programas "compiladores de Batch a .exe" lo que hacen es empacar el archivo y extraerlo en un directorio temporal, nada que no puedas reproducir con un SFX (self-extracting archive) de WinRAR por ejemplo... y ofreciendo mayor versatilidad en todos los aspectos (bueno, excepto ofuscación de código).

x eso mi insitencia en el tema que debe de ser en bath xq no se como integrar la solucion q me distes dentro de .bat

Siempre que el programa que estés utilizando para " "compilar" " el archivo.bat te permita hacer lo siguiente (con WinRAR podrías hacerlo sin problemas), podrías crear el archivo de script de Powershell ("archivo.ps1"), añadirlo junto al archivo.bat al generar el executable con los archivos empacados, y en tu archivo.bat añadir una sentencia para iniciar la consola de powershell pasándole como agumento la ruta del script de Powershell que quieres ejecutar. ¿Se entiende lo que digo?.

Sigo viendo eso mejor opción, que hacerlo directamente en Batch.



De todas formas si sigues empeñado en querer hacerlo en Batch...

Citar
-leer la linea y guardarla en una variable
-analizar la linea y si tiene un producto seguido de un -0 desecharlo (esto buscando una coincidencia en la linea *CAJA-0*) BUENO ESA ERA LA IDEA
-si al analizar la linea no contiene algo igaul al ejem: CAJA-0 entonces copiarla en un txt nuevo

( PRIMERA PARTE DEL BATCH-SCRIPT )
Código
  1. @Echo OFF & (CHCP 1252)1>Nul
  2.  
  3. (FOR /F "UseBackQ Tokens=* Delims=" %%# IN ("csv.txt") DO (
  4.    (Echo "%%~#"|FIND "-0")1>NUL || (
  5.        Echo %%~#
  6.    )
  7. ))>"%TEMP%\csv.tmp"

Citar
-organizar el txt

El tema de la ordenación ya es mucho más complicado en Batch, a menos que te conformases con una ordenación de String:
Código
  1. (Type "%TEMP%\csv.tmp" | SORT)>"Nuevo.csv"

Código:
0.50-TANQUE-2
10-CAJA-12
10-LATA-1
20-TANQUE-5
5-CAJA-5

...entonces mejor usa PowerShell si o si para una ordenación numérica:
( SEGUNDA PARTE DEL BATCH-SCRIPT )
Código
  1. (
  2.  Echo.$csv = Import-Csv -Header "Name1", "Name2", "Name3" -delimiter '-' "%TEMP%\csv.tmp"
  3.  Echo.$csv ^| %% { $_.Name1 = [int]$_.Name1 }
  4.  Echo.$csv ^| Sort-Object "Name1"
  5. )>"%TEMP%\temp.ps1"
  6.  
  7. (Powershell.exe -ExecutionPolicy Bypass -Command "& '"%TEMP%\temp.ps1"'")>"Nuevo.csv"
  8.  
  9. Pause & Exit /B 0

Resultado de ejecución:
Código:
Name1 Name2  Name3
----- -----  -----
    0 TANQUE 2
    5 CAJA   5
   10 CAJA   12
   10 LATA   1
   20 TANQUE 5

Y si quieres ordenar la tabla CSV tomando la segunda columna, en el código de arriba pásale "Name2" en vez de "Name1" como agumento del método Sort-Object...

Resultado de ejecución:
Código:
Name1 Name2  Name3
----- -----  -----
    5 CAJA   5    
   10 CAJA   12  
   10 LATA   1    
    0 TANQUE 2    
   20 TANQUE 5  

¡Feliz año nuevo!.
« Última modificación: 31 Diciembre 2017, 12:44 pm por Eleкtro » En línea

Se7eN

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda por favor!!!
« Respuesta #4 en: 2 Enero 2018, 09:13 am »

amigo elektro gracias nuevamente x tomarte el tiempo de responderme me ha servido de mucho esa respueta que posteastes mil gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
SOS:AYUDA POR FAVOR!!!
Juegos y Consolas
wennam 2 3,179 Último mensaje 5 Enero 2004, 04:01 am
por FeRmO
AYUDA -.- ahora no entro más en 4chan (tengo una duda, ayuda por favor)
Foro Libre
Draklit 6 8,750 Último mensaje 15 Octubre 2010, 03:14 am
por Draklit
creo que dañe mi router por favor ayuda no c que hacer por favor ayuda
Redes
ddiego84 2 2,915 Último mensaje 2 Febrero 2016, 23:05 pm
por IBE
[AYUDA] Por favor ayuda con imagenes en html
Desarrollo Web
gramsch 3 2,410 Último mensaje 24 Febrero 2016, 21:35 pm
por Pantera80
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines