elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 07:57  

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez.)
| | |-+  Acciones sobre archivos de texto. [Batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 Ir Abajo Respuesta Imprimir
Autor Tema: Acciones sobre archivos de texto. [Batch]  (Leído 46,509 veces)
geoclima

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #45 en: 8 Marzo 2010, 22:09 »

Hola Leo,

subí los archivos a mi servidor para que puedas chequearlos. Una pregunta.... como seria el mismo proceso en PERL, es decir

unir el contenido del archivo prediccion.add y p11xand1.xml para obtener un tercer archivo que se pueda abrir sin problema en el navegador?

ALBERT


En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #46 en: 9 Marzo 2010, 00:00 »

Es que no te pido que subas todos los archivos y demás, solo que me pongas el archivo aquí mismo, pegalo y etiquetalo y hazme evidente el error que tiene, para poder tratarlo.

Así me lo complicas mucho.

A simple vista se nota que el problema lo deja edlin al editar, deja un caracter al final de las líneas.

Podríamos usar sed(no está en Windows, hay que descargarlo) para eliminar dicha línea.
Código
@echo off
:: Conseguir el numero de lineas:
for /f "tokens=1" %%_ in ('type "shit.txt" ^| find /v /c ""') do (set /a n_lines="%%_");
:: Eliminar la ultima linea:
sed %n_lines%d "shit.txt"

Claro que necesitas a sed.
El archivo "shit.txt" lo cambias por tu archivo a modificar.

O incluso más facil:
Código:
type "file.txt" | sed $d


« Última modificación: 9 Marzo 2010, 00:39 por Leo Gutiérrez. » En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
M_A_R_T_I_N

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #47 en: 12 Marzo 2010, 19:38 »

Hola, la verdad que me fue muy util, pero tengo un tema que no pude resolver:

Quiero modificar una linea que empieza con < y el bat se me queda diciendo que no esperaba <

Ej:

Código:
111
222
333

y quiero que quede:

Código:
111
<span style="font-size: 10pt; color: blue; font-f...........
333

Estoy usando:

Código:
@echo off
(
echo 'aca pongo la linea que modifico
echo "   <span style="font-size: 10pt; color: blue; font-f.......
echo w
echo e
) | edlin /b c:\mail\prepos.htm

Si le pongo comillas me lo modifica, pero cuando abro el htm me muestra las comillas, se podran sacar de alguna manera? Una queda al principio de la linea y la otra al final.

El script anda perfecto pero se queda con el signo <

Desde ya muchas gracias, es el primer mensaje que escribo si algo esta mal en la redecion del mensaje avisenme.

Muchas Gracias.
« Última modificación: 12 Marzo 2010, 21:46 por M_A_R_T_I_N » En línea
xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #48 en: 14 Marzo 2010, 14:28 »

Añade "^" antes del carácter.
En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #49 en: 14 Marzo 2010, 17:09 »

Añade "^" antes del carácter.

Para EDLIN no es válido.
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
M_A_R_T_I_N

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #50 en: 14 Marzo 2010, 23:01 »

Añade "^" antes del carácter.

Para EDLIN no es válido.

Hola, abria alguna manera de hacerlo o bien de borrar las comillas despues de reemplazado el texto?
Muchas Gracias.
En línea
wajagaum

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #51 en: 18 Marzo 2010, 18:25 »

ho la tengo un archio .qrp lo edito con notepad. quisiera saber si con el batch yo puedo mostrar un nuemro que esta dentro del archivo y  pedir un nuevo nuemro en pantalla y el archivo bat busque dentro del archivo .qrp los que hayan y reemplazarlo por el pedido en pantalla.

texto:

Código:
Begin Column
   FieldName = "Promedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Promedio"
   VBDataType = vbDouble
   Formula = "SUM(TransactionEntry.Quantity)/3"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 990
   GroupMethod = groupmethodNone
   ColFormat = "#"
   ColAlignment = flexAlignLeftCenter
End Column

Begin Column
   FieldName = "VtaPromedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Venta Prom"
   VBDataType = vbCurrency
   Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/3))"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 1425
   GroupMethod = groupmethodSum
   ColFormat = ""
End Column



y quiero mestrar "/3" y pedir otro numero por ejemplo "/n" y reemplazarlo.

te agradecia mucho tu ayuda.
« Última modificación: 29 Mayo 2010, 02:39 por Leo Gutiérrez. » En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #52 en: 18 Marzo 2010, 23:39 »

Añade "^" antes del carácter.

Para EDLIN no es válido.

Hola, abria alguna manera de hacerlo o bien de borrar las comillas despues de reemplazado el texto?
Muchas Gracias.

Con edlin vas a seguir teniendo problemas.

Así que te recomiendo sed para Windows, con una expresión regular bastaría.
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #53 en: 19 Marzo 2010, 00:41 »

@wajagaum

¿Cambiar estas líneas?

Código:
   Formula = "SUM(TransactionEntry.Quantity)/3"
   Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/3))"

En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #54 en: 19 Marzo 2010, 04:00 »

Si es lo que querías, te tengo esta respuesta:

Supongamos que tenemos el archivo siguiente(yo lo llamé "file.txt":

Código:
Begin Column
   FieldName = "Promedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Promedio"
   VBDataType = vbDouble
   Formula = "SUM(TransactionEntry.Quantity)/3"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 990
   GroupMethod = groupmethodNone
   ColFormat = "#"
   ColAlignment = flexAlignLeftCenter
End Column

Begin Column
   FieldName = "VtaPromedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Venta Prom"
   VBDataType = vbCurrency
   Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/3))"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 1425
   GroupMethod = groupmethodSum
   ColFormat = ""
End Column

Lo trabajaremos sin espacios, para no tener conflicto con los ciclos FOR.

El script que hice, cuenta las ocurrencias, y te va pidiendo qué escribir en la línea en donde se dió la ocurrencia, algo así:

Código:
C:\>lala.bat
1 : leito
2 : gutierrez

Begin Column
   FieldName = "Promedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Promedio"
   VBDataType = vbDouble
   Formula = "SUM(TransactionEntry.Quantity)/leito"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 990
   GroupMethod = groupmethodNone
   ColFormat = "#"
   ColAlignment = flexAlignLeftCenter
End Column
Begin Column
   FieldName = "VtaPromedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Venta Prom"
   VBDataType = vbCurrency
   Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/gutierrez))"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 1425
   GroupMethod = groupmethodSum
   ColFormat = ""
End Column

C:\>

En este caso solo me pidió de 1 a 2, porque solo hubo dos ocurrencias de tipo: /3.

Aquí está el script:
Código
@echo off
setlocal enabledelayedexpansion
set /a "count=0"
for /f "tokens=1" %%_ in ('type "file.txt" ^| findstr /v "^$" ^| findstr /r /i /n ".*\/[0-9]" ^| find /v /c ""') do (
set "n_numbers=%%_";
)
set /a count=1
for /f "tokens=1 delims=:" %%a in ('type "file.txt" ^| findstr /v "^$" ^| findstr /r /i /n ".*\/[0-9]"') do (
set "ocurrencia[!count!]=%% style="color: #448888;">a";
set /a count+=1
)
:code
for /l %%_ in (1, 1, %n_numbers%); do (
set /p "string_c[%%_]=%%_ : !!
if not defined string_c[%%_] (goto:code)
);
echo.
for /f "tokens=1" %%_ in ('type "file.txt" ^| findstr /r /v "^$" ^| find /v /c ""') do (
set "n_lines=%%_"
)
set /a n_lines+=1
set /a count=1
set /a count_str=1
set /a i=1
:show
if !count! equ !n_lines! (goto:eof) else (
if !count! equ !ocurrencia[% style="color: #448888;">i%]! (set /a "i+=1")
findstr /v /r "^$" file.txt | sed -n "!count!p" | sed "s/\/[0-9]*/\/!string_c[% style="color: #448888;">i%]!/g"
)
set /a count+=1
goto:show

Por cierto, necesitas sed para Windows, hacerlo con windows solamente sería un engorro.
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
wajagaum

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #55 en: 19 Marzo 2010, 21:16 »

Brothers te cuento que no funciona solo ejecuto el bat, me pide los valores pero no actualiza a los nuevos escritos en pantalla que debo hacer.  :D
En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #56 en: 19 Marzo 2010, 23:06 »

Brothers te cuento que no funciona solo ejecuto el bat, me pide los valores pero no actualiza a los nuevos escritos en pantalla que debo hacer.  :D

Ponme el script que estás usando, el archivo de texto que quieres editar, dime que es exactamente que es lo que quieres editar y si puedes ponme una captura de pantalla.

El script lo he probado y a mi sí me funciona.
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
wajagaum

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #57 en: 20 Marzo 2010, 15:35 »

ok mira, lo que yo quiero es que un bat, me muestre que numero hay en la fila # x y en la fila #, Y que pida reemplazarlo por un numero nuevo y lo reemplce:

el texto es este mira...
nota: no es .txt es .qrp


Mi caso es que quiero que me muestre que numero hay despues del / que son la cantidad de meses y cuando me toque cambiarlo me muestre cuantos meses hay y pueda cambiarlo a lli mismo.


//--- Report Summary --- //

Begin ReportSummary
   ReportType = reporttypeSales
   ReportTitle = "Reporte Ventas Compras"
   PageOrientation = pageorientationPortrait
   WordWrap = False
   ShowDateTimePicker = True
   OutLineMode = True
   Groups = 0
   GroupDescription = ""
   DisplayLogo = True
   LogoFileName = "Walter Galvez"
   ProcedureCall = ""
   PreQuery1 = ""
   PreQuery2 = ""
   TablesQueried = <BEGIN>

      FROM        TransactionEntry WITH(NOLOCK) 
      INNER JOIN  [Transaction] WITH(NOLOCK)
                  ON TransactionEntry.TransactionNumber = [Transaction].TransactionNumber
                  AND TransactionEntry.StoreID = [Transaction].StoreID
      LEFT JOIN   Item WITH (NOLOCK)
                  ON TransactionEntry.ItemID = Item.ID
      LEFT JOIN   Department WITH(NOLOCK)
                  ON Item.DepartmentID = Department.ID
      LEFT JOIN   Category WITH(NOLOCK)
                  ON Item.CategoryID = Category.ID
      LEFT JOIN   Supplier WITH(NOLOCK)
                  ON Item.SupplierID = Supplier.ID
      LEFT JOIN   WGPadres WITH(NOLOCK)
        ON Item.ParentItem = WGPadres.Id
      LEFT JOIN   WGQtyCD WITH(NOLOCK)
        ON Item.Id = WGQtyCD.ItemId
      LEFT JOIN   Store ON TransactionEntry.StoreID = Store.ID

<END>
   SelCriteria = ""
   GroupBy = "Item.ItemLookupCode"
   SortOrder = "Depto, ItemDescription"
End ReportSummary


//--- Title Rows ---//

Begin TitleRow
   Text = "<Store Name>"
   Font = "Arial"
   FontBold = True
   FontSize = 16
   Color = "Blue"
End TitleRow

Begin TitleRow
   Text = "<Report Title>"
   Font = "Arial"
   FontBold = True
   FontSize = 12
   Color = "Black"
End TitleRow

Begin TitleRow
   Text = "Generated On <Report Date>"
   Font = "Arial"
   FontBold = True
   FontSize = 10
   Color = "Black"
End TitleRow


//--- Filters ---//

Begin Filter
   FieldName = "[Transaction].Time"
   FilterOp = reportfilteropBetween
   FilterLoLim = "15/01/2010"
   FilterHilim = "16/03/2010"
   FilterNegated = False
   FilterConnector = reportfilterbooleanconAND
End Filter


//--- Columns ---//

Begin Column
   FieldName = "Promedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Promedio"
   VBDataType = vbDouble
   Formula = "SUM(TransactionEntry.Quantity)/3"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 990
   GroupMethod = groupmethodNone
   ColFormat = "#"
   ColAlignment = flexAlignLeftCenter
End Column

Begin Column
   FieldName = "VtaPromedio"
   DrillDownFieldName = ""
   DrillDownReportName = ""
   StoreIDFieldName = ""
   Title = "Venta Prom"
   VBDataType = vbCurrency
   Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/3))"
   ColHidden = False
   ColNotDisplayable = False
   FilterDisabled = False
   ColWidth = 1425
   GroupMethod = groupmethodSum
   ColFormat = ""
End Column
En línea
M_A_R_T_I_N

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #58 en: 28 Marzo 2010, 23:24 »

Añade "^" antes del carácter.

Para EDLIN no es válido.

Hola, abria alguna manera de hacerlo o bien de borrar las comillas despues de reemplazado el texto?
Muchas Gracias.

Con edlin vas a seguir teniendo problemas.

Así que te recomiendo sed para Windows, con una expresión regular bastaría.


1000 Gracias!!! Funciona ok!!!
En línea
KamuiDNA

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #59 en: 22 Abril 2010, 23:20 »

Hola, tengo una duda, realize un proceso en Batch que me efectua el despliegue de datos de una base de lluvia por dia,  el proceso funciona bien  y esta probado en windows vista y XP, pero al montarlo en windows server 2003 este solo ejecuta la mitad del programa y lo cierra, no me marca ningun error ni nada, solo hace como que lo ejecuta pero no ejecuta todo el proceso, alguna idea o sugerencia.
En línea
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines