como sacar textos de html con cmd bat ?

Iniciado por novato04, 25 Julio 2014, 03:28 AM

0 Miembros y 1 Visitante están viendo este tema.

novato04

tengo un archivo html con todo este texto
pero lo que quiero hacer es sacar el nombre de la pelicula
con la etiqueta "<p>"

si se puede con otro lenguaje ayudenme..  ;D ;D

Código (html4strict) [Seleccionar]
<div class="nombre-pelicula"><p>The November Man</p></div>
<div class="nombre-pelicula"><p>15 años y un día</p></div>
<div class="nombre-pelicula"><p>El crítico</p></div>

y despues ponerlo en un archivo de texto y meterlo con este parametro "Label.SetEnabled("", true);"
Asi quedaria

Label.SetEnabled("The November Man", true);
Label.SetEnabled("15 años y un día", true);
Label.SetEnabled("El crítico", true);


todo esto terminaria en un archivo de texto.
;D ;D ;D ;D ;D ;D ;D ;D ;D

Eleкtro

#1

1. ¿Porque usas el icono de "resuelto" cuando tu problema no está resuelto?, la utilización de ese icono está reservada para los temas resueltos.

2. Al redactar un post con código, debes etiquetar el código utilizando su respectiva etiqueta GeShi.

3. ¿Has intentado hacer la tarea por ti mismo?, ¿donde está tu código demostrándolo?.





El formato que le pretendes dar al contenido del texto son instrucciones de otro lenguaje, las cuales me imagino que luego usarás en ese otro lenguaje, ¿entonces porque en lugar de parsear el HTML en ese lenguaje que estés utilizando, prefieres involucionar para usar una herramienta básica e imperfecta como es Batch?, no le encuentro sentido, si tienes dudas respecto a como parsear los atributos/tags de un HTML en ese lenguaje entonces te sugiero que formules una pregunta enfocada a ese lenguaje.

Batch no tiene soporte (por así decirlo) para la edición de HTML, además su capacidad RegEx es muy limitada, hay que recurrir a técnicas como Substring o Split (aunque esta última también es limitada en Batch), de todas formas se puede hacer ...pero no esperes precisión en ciertas circunstancias (Ej: Si la cadena contiene "<" o ">"), sinceramente has elegido el peor lenguaje que podías escojer, tómate lo que te he sugerido a modo de consejo.

Código (dos) [Seleccionar]
@Echo OFF

Set "DIV=<div class="nombre-pelicula"><p>The November Man</p></div>"

For /F "Tokens=4 Delims=<>" %%a in ('Echo "%DIV%"') Do (
Echo Label.SetEnabled^("%%a", True^);
)

Pause&Exit /B 0


Saludos








novato04

#2
Me ayudarias con esto  :D
Ise algunos cambios en el script para que funcione como quiero
porque como dijiste no se puede con html en cmd :c

Puse los nombres de las peliculas en un archivo de texto asi

The November Man
15 años y un día
El crítico

y con este script  pone los nombres de la peliculas en una variable pero
el problema es que solo pone un solo nombre

Código (dos) [Seleccionar]
@Echo OFF

type nombre-pelis.txt
For /F "Tokens=1 Delims=<>" %%a in ('type nombre-pelis.txt') Do (
Echo Label.SetEnabled^("%%a", True^);
)> "final.txt"

_______________________________________

Código (lua) [Seleccionar]
Label.SetEnabled("El crítico", True);
_______________________________________
yo quiero que ponga todos los nombres en una variable asi
______________________________________
Código (lua) [Seleccionar]
Label.SetEnabled("The November Man", True);
Label.SetEnabled("15 años y un día", True);
Label.SetEnabled("El crítico", True);

______________________________________



Eleкtro

#3
Cita de: Eleкtro en 25 Julio 2014, 04:45 AM2. Al redactar un post con código, debes etiquetar el código utilizando su respectiva etiqueta GeShi.

Porfavor, respeta las normas.

En el For estás partiendo la cadena para tomar 1 solo Token, debes tomarlos todos, y tampoco debes usar delimitadores.
(si corriges tu post te mostraré un ejemplo :P)




EDITO:

Cita de: novato04 en 25 Julio 2014, 22:39 PMPodrias mandarme el ejemplo  ;D

Código (dos) [Seleccionar]
(For /F "Delims=" %%a in ('type "nombre-pelis.txt"') Do (
   Echo Label.SetEnabled^("%%a", True^);
))>"final.txt"


PD: Sigo insistiendo en que no deberías usar Batch si dispones de un lenguaje de verdad, acostumbrarse a hacerlo por la via más sencilla no siempre es lo mejor :P.

Saludos








novato04

#4
Funciona el bat
Código (dos) [Seleccionar]
@echo off
type nombre.txt
(For /F "Delims=" %%a in ('type "nombre.txt"') Do (
    Echo Label.SetText^("Label1", "%%a"^);

)) >"final.txt"



Código (lua) [Seleccionar]
Label.SetText("Label1", "Los siete samurais ");
Label.SetText("Label1", "Pulp fiction ");
Label.SetText("Label1", "Testigo de cargo ");


Solo me falta una cosa que salgan enumeradas asi

Código (lua) [Seleccionar]
Label.SetText("Label1", "Los siete samurais ");
Label.SetText("Label2", "Pulp fiction ");
Label.SetText("Label3", "Testigo de cargo ");


;D ;D ;D ;D

Eleкtro

#5
"Hasta infinito" es imposible ya que la capacidad de Batch equivale al valor máximo de un Int16 (32.767).

Solo tienes que setear una variable numérica y sumarle un valor de "1" en la iteración del For... vamos, tan dificil no es...
Código (dos) [Seleccionar]

Set /A "Count=0"
Set /A "Count += 1"
Echo %Count%


¿Porque no lees un manual básico de Batch?.

Saludos








novato04

Ise esto pero no me salio nada  :(


Código (dos) [Seleccionar]
@echo off
type nombre.txt
(For /F "Delims=" "" %%a in ('type "nombre.txt"') Do (
    set /a enu+=1
    Echo Label.SetText^("Label %enu%", "%%a"^);

)) >"final.txt"


soy novato

Eleкtro

Código (dos) [Seleccionar]
   @echo off
   rem type nombre.txt
   (For /F "Delims=" %%a in ('type "nombre.txt"') Do (
      Call set /a enu+=1
      Echo Label.SetText^("Label %%enu%%", "%%a"^);
   )) >"final.txt"


Otra solución sera activar EnableDelayedExpansion:
· http://ss64.com/nt/delayedexpansion.html

Saludos








novato04

#8
Código (dos) [Seleccionar]
@echo off
   rem type nombre.txt
   (For /F "Delims=" %%a in ('type "nombre.txt"') Do (
      Call set /a enu+=1
      Echo Label.SetText^("Label %%enu%%", "%%a"^);
   )) >"final.txt


Sale esto al final
No se enumeran  :huh:

Código (lua) [Seleccionar]
Label.SetText("Label %enu%", "El padrino ");
Label.SetText("Label %enu%", "El padrino II ");
Label.SetText("Label %enu%", "La lista de Schindler ");


Eleкtro

#9
Lo corregí al vuelo (sin testearlo) y me confundí al usar la llamada a Call en la instrucción equivocada, ahora sí:


...
set /a enu+=1
Call Echo Label.SetText^("Label %%enu%%", "%%a"^);
...


PD: No es necesario que me envies un MP cada vez que respondas al hilo, no por ello me voy a enterar más pronto.

Saludos!