Autor
|
Tema: Acciones sobre archivos de texto. [Batch] (Leído 46,509 veces)
|
geoclima
Desconectado
Mensajes: 4
|
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
Mensajes: 2.940
/^$/
|
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. @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: type "file.txt" | sed $d
|
|
|
|
« Última modificación: 9 Marzo 2010, 00:39 por Leo Gutiérrez. »
|
En línea
|
|
|
|
M_A_R_T_I_N
Desconectado
Mensajes: 4
|
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: 111 222 333 y quiero que quede: 111 <span style="font-size: 10pt; color: blue; font-f........... 333 Estoy usando: @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
Mensajes: 273
Ich werde dich töten..
|
Añade "^" antes del carácter.
|
|
|
|
|
En línea
|
 YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Conectado
Mensajes: 2.940
/^$/
|
Añade "^" antes del carácter.
Para EDLIN no es válido.
|
|
|
|
|
En línea
|
|
|
|
M_A_R_T_I_N
Desconectado
Mensajes: 4
|
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
Mensajes: 3
|
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: 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
Mensajes: 2.940
/^$/
|
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
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Conectado
Mensajes: 2.940
/^$/
|
@wajagaum ¿Cambiar estas líneas? Formula = "SUM(TransactionEntry.Quantity)/3" Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/3))"
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Conectado
Mensajes: 2.940
/^$/
|
Si es lo que querías, te tengo esta respuesta: Supongamos que tenemos el archivo siguiente(yo lo llamé "file.txt": 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:\>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: @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
|
|
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Conectado
Mensajes: 2.940
/^$/
|
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.  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
|
|
|
|
wajagaum
Desconectado
Mensajes: 3
|
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
Mensajes: 4
|
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
Mensajes: 9
|
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
|
|
|
|
|
|