Autor
|
Tema: Consulta sobre comandos dentro de FOR [RESUELTO!] (Leído 3,463 veces)
|
plancha_hd
Desconectado
Mensajes: 3
|
Buenas tardes gente del foro, pongo un nuevo tema porque luego de buscar mucho por los ya creados y por el resto de internet no encontre respuesta a mi problema. Caculo debe ser bastante simple, pero batch me tiene a mal traer. El tema es asi, quiero guardar la salida de un comando en una variable, para lo cual entiendo tengo que usar la siguiente estructura: For /F "Tokens=*" %%# in ('comando1 ^| comando2' ) Do (Set "Variable= %%#" ).
El problema es que cuando el comando es "echo", el Do cambia de color y no toma el for. Siendo mas puntual, quiero hacer: FOR /F %%A IN ( ' echo %%A ^| grep -o ../../ ' ) DO ( set variable= %%A)
y no me funciona, de por si lo que necesito leer esta en un txt, probe concatenando dos for, ejemplo: FOR /F %%A IN ( ' prueba.txt ' ) DO ( )
y nada, probe muchas alternativas pero no logro conseguir que lo que tengo en un txt, me lo guarde formateado en una variable para poder trabajar. Espero haber sido claro y agradezco de antemano cualquier ayuda!. Saludos
|
|
« Última modificación: 7 Octubre 2014, 21:54 pm por plancha_hd »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Buenas 1) ¿Estás utilizando la aplicación externa Grep, el puerto para Windows? 2) ¿Cual es la intención del parámetro -o de Grep, que se supone que debe conseguir? Para leer el contenido de un archivo de texto has de utilizar el comando Type, no Echo. For /F "UseBackQ Tokens=* Delims=" %%# In ( "Archivo.txt" )
Si tu intención es añadir más de una linea de texto a una variable entonces debes saber que Batch no soporta variables multilinea por naturaleza, es un lenguaje muy simple y debes recurrir a un pequeño hack para conseguirlo, y si piensas trabajar una variable multilinea lo tendrás algo dificil para manejarla de forma natural como se haria en otro lenguaje. @Echo OFF & setlocal EnableDelayedExpansion
REM Dejar un espacio de 2 lineas vacias: set NewLine=^
REM Fin de las lineas vacias.
set "MultiLine="
For /F "UseBackQ Tokens=* Delims=" %%# In ( "Archivo.txt" ) Do ( Set "MultiLine=!MultiLine!%%#!NewLine!" )
Echo !MultiLine!
Pause&Exit /B 0 Saludos
|
|
|
En línea
|
|
|
|
plancha_hd
Desconectado
Mensajes: 3
|
De antemano mil gracias por la ayuda Elektro!.
1) Si, grep de gnuwin32 porque me estaba volviendo loco para formatear la salida jeje. 2) -o es "only-matching", o sea, muestra solo lo que coincide con la condición que le doy, en mi caso "../../".
Mi primer error es el que me marcas, creo que va type no echo en lo que quiero hacer. Creo que en realidad no necesito variables multilinea, la cosa es asi:
En un txt tengo las fechas de creación de unos archivos que tiene un directorio (las extraje con forfiles), luego quiero leer el archivo e ir guardándolas en una variable para trabajar, porque no todas las fechas me sirven, entonces mi idea es recorrer el txt y aquellas fechas que no sean "01/**/" las guarde aparte (en otro txt por ejemplo), porque una vez pasada esa condición voy a borrar todos los archivos que contengan la fecha que tiene ese ultimo txt. No se si necesito multilinea porque el contenido de la variable quiero que cambie con cada iteracion del for. Espero haber podido explicarme mejor.
Muchas gracias por ayudar!. Saludos!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Mi primer error es el que me marcas, creo que va type no echo en lo que quiero hacer. Ahora que reviso el código que te mostré, se me olvidó comentar que en un For no es necesario usar el comando Type para leer el contenido de un txt (un ejemplo, el For que te mostré), pero en el For que tu usase si, debiste user Type en lugar de Echo para pasarle la salida a Grep, con Echo solo estás escribiendo el nombre del archivo, no accediendo a su contenido. Creo que en realidad no necesito variables multilinea, la cosa es asi:
En un txt tengo las fechas de creación de unos archivos que tiene un directorio (las extraje con forfiles), luego quiero leer el archivo e ir guardándolas en una variable para trabajar, porque no todas las fechas me sirven, entonces mi idea es recorrer el txt y aquellas fechas que no sean "01/**/" las guarde aparte (en otro txt por ejemplo), porque una vez pasada esa condición voy a borrar todos los archivos que contengan la fecha que tiene ese ultimo txt. No se si necesito multilinea porque el contenido de la variable quiero que cambie con cada iteracion del for. Espero haber podido explicarme mejor.
Pues no, ahora que has explicado lo que pretendes hacer, si tu intención es filtrar un txt para pasar unas fechas a otro txt no necesitas usar variables, ni siquiera necesitas Grep, ya que puedes utilizar el comando FINDSTR. Ejemplo: (Type "Fechas.txt" | Findstr /V "^01\/..\/....$")> "Nuevo.txt"
Fechas.txt01/01/2011 12/10/2012 01/07/2012 10/09/2013 30/10/2010 01/12/2010 01/03/2014 18/05/2014 01/07/2014 19/11/2014 Nuevo.txt12/10/2012 10/09/2013 30/10/2010 18/05/2014 19/11/2014 Saludos.
|
|
« Última modificación: 7 Octubre 2014, 21:11 pm por Eleкtro »
|
En línea
|
|
|
|
plancha_hd
Desconectado
Mensajes: 3
|
SIIIIIII me funciono!!, era justo lo que quería!. Mil gracias por la enorme mano que me diste, dos días entero busque data de como hacer. Copio y pego como me quedo el código del for por si a alguien mas le resulta útil, porque le hice mínimas modificaciones porque no me buscaba bien: FOR /F %%A IN ( Viejo.txt ) DO ( ( Type Viejo.txt | Findstr /V ^01/../.... ) > Nuevo.txt ) type nuevo.txt | sort Saludos, y gracias again!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
el interprete de comandos en xp es lo mismo que ejecutar(tema resuelto)
Hacking
|
Paul Young
|
6
|
5,738
|
26 Diciembre 2010, 17:06 pm
por Paul Young
|
|
|
Consulta; Necesito armar una consulta para saber si una fecha ha caido dentro...
Bases de Datos
|
astinx
|
6
|
6,429
|
23 Diciembre 2011, 20:34 pm
por astinx
|
|
|
{RESUELTO}Cargar documento dentro de una celda, mediante javascript+jquery
« 1 2 3 »
Desarrollo Web
|
|Miguel|
|
23
|
15,347
|
28 Marzo 2012, 00:30 am
por |Miguel|
|
|
|
[resuelto]pregunta , informacion del compilador dentro del ejecutable
Programación C/C++
|
daryo
|
5
|
3,278
|
14 Marzo 2013, 20:13 pm
por daryo
|
|
|
[Resuelto] cargar secuencias de comandos no autorizadas
Desarrollo Web
|
basickdagger
|
2
|
4,105
|
14 Agosto 2015, 10:32 am
por #!drvy
|
|