Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leogtz

#2031
Cita de: wajagaum en 19 Marzo 2010, 21:16 PM
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.
#2032
set /a linea=0
for /f "tokens=*" %%x in (file.txt) do (
call :show %%x
)
goto:eof

:show
set /a linea+=1
echo %linea% : %*
goto:Eof

Las numera.

Explica un poco más lo que quieres hacer.
#2033
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:
Código (dos) [Seleccionar]

@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!]=%%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[%i%]! (set /a "i+=1")
findstr /v /r "^$" file.txt | sed -n "!count!p" | sed "s/\/[0-9]*/\/!string_c[%i%]!/g"
)
set /a count+=1
goto:show


Por cierto, necesitas sed para Windows, hacerlo con windows solamente sería un engorro.
#2034
@wajagaum

¿Cambiar estas líneas?

   Formula = "SUM(TransactionEntry.Quantity)/3"
   Formula = "SUM(TransactionEntry.Price * (TransactionEntry.Quantity/3))"


#2035
Cita de: M_A_R_T_I_N en 14 Marzo 2010, 23:01 PM
Cita de: Leo Gutiérrez. en 14 Marzo 2010, 17:09 PM
Cita de: xassiz en 14 Marzo 2010, 14:28 PM
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.
#2036
Disculpen que me meta, pero bueno, ya que están hablando de qt.

Una duda que siempre tuve es, ¿cómo hacer para dar un software hecho con qt sin que la otra máquina tenga qt?

Pregunto esto porque yo al pasar el ejecutable no funcionó, entonces tuve que pasar una .dll junto al ejecutable, y un programita de 400 kb se fue hasta 50 megas.
#2037
Cita de: xassiz en 14 Marzo 2010, 14:28 PM
Añade "^" antes del carácter.

Para EDLIN no es válido.
#2038
¿Qué algoritmo sigues para la generación de los primos?
#2039
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 (dos) [Seleccionar]

@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
#2040
Da más detalles, solo pides.

No dices si quiera en qué lenguaje.