Acciones sobre archivos de texto. [Batch]

Iniciado por leogtz, 24 Enero 2009, 00:30 AM

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

Hekaly

Hola flony, gracias por responder.

Ya pense en algo parecido al codigo que has puesto, meter en una variable el archivo (ya que es todo una sola linea) y luego extraer el numero correspondiente.

Pero al intentar introducir el texto del archivo en una variable:

<"manga.txt" set /p "a="

Y hacer el corerspondiente echo dice lo siguiente: "No se esperaba < en este momento"

Eso debe ser que hay caracteres de redireccion (< y >) y por eso no me funciona bien. Pero aun asi probare el codigo que has puesto.

flony

#101
fijate no es de genio  :P esta en el tutorial de leo aca en esta pagina...como introducir un renglon como variable...pero bue con un for seria mas seguro por las dudas tenga mas de 100 capitulos
si un problema no tiene solucion entonces no es un problema...es algo inevitable

BlacKGilgamesH

Cita de: Hekaly en 30 Agosto 2010, 18:42 PM
Hola flony, gracias por responder.

Ya pense en algo parecido al codigo que has puesto, meter en una variable el archivo (ya que es todo una sola linea) y luego extraer el numero correspondiente.

Pero al intentar introducir el texto del archivo en una variable:

<"manga.txt" set /p "a="

Y hacer el corerspondiente echo dice lo siguiente: "No se esperaba < en este momento"

Eso debe ser que hay caracteres de redireccion (< y >) y por eso no me funciona bien. Pero aun asi probare el codigo que has puesto.


Para poner el archivo de texto en la variable se haria asi:

for /f %%a in (archivo.txt) do (
set arch=%%a
)
echo %arch%
pause>nul


Saludos

Hekaly

#103
Buenas a todos. Ya he encontrado una forma de hacerlo, puede que no la mas facil o mas corta pero si es valida.

Como tengo varios comandos linux para windows he estado pensando y he usado el comando awk.

Así poniendo

awk "{print $38}" manga.txt | cut -d "=" -f 5 | cut -d "&" -f 1

Lo malo de esto seria que solo funcionaria si la linea fuera de la misma longitud pero para solucionarlo uso el comando wc (tambien para version windows)

wc -w manga.txt | awk "{print $1}"

Saca el numero de palabras, siendo este numero el que se nesesita para el awk de arriba y asi sacar el susodicho numero.


flony

hola leo hay una pregunta que siempre me hago y es que el delims en for delimita "hasta ahi" y me pregunto hay una forma de si yo se el limite saber "despues de" ese limite...ojala haya quedado claro la pregunta  :silbar:
si un problema no tiene solucion entonces no es un problema...es algo inevitable

leogtz

No, no te he entendido, por favor, coloca un ejemplo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

flony

#106
hola leo tendria una forma parecida a esto
Citarhola"como_estas
yo_aca_al"pp
pero_queria-saber"de_vos
pero_en_este_renglon_es_no
xq_no_hay_comillas
quiero q tome despues de las comillas...
resultado
Citarcomo_estas
pp
de_vos
o sea usar las comillas como el denominador comun en los renglones y tomar desde ahi en adelante
jijiji es una duda que siempre tuve xq bat me obliga pensar mas o menos asi
1)buscar comillas 2)tomar lo anterior y del 3)renglon sacar por diferencia lo que quiero
Citar(hola"comoestas)-(hola)=(comoestas)
si un problema no tiene solucion entonces no es un problema...es algo inevitable

leogtz

Con las comillas creo recordar que dará error, creo que ya se habló aquí de un bug en el comando FOR, así que primero debes cambiar ese caracter por otro y hacer el proceso.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

flony

y si fuera otro caracter pr ejemplo un punto (.)
tipo
Citarhola.txt
chau.dll
sip.zips
si un problema no tiene solucion entonces no es un problema...es algo inevitable

leogtz

Has probado:

Código (dos) [Seleccionar]
for /f "delims=. tokens=*" %%_ in (...)

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com