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

#1891
Scripting / Re: Modificar archivos de texto
12 Mayo 2010, 00:20 AM
He hecho esto:

Supongamos que nuestro archivo se llama "file.txt", y tiene un contenido igual al que pusiste:
Código (bash) [Seleccionar]

LST;1;
costados\koa9\koa9gx70;ko-//-a9-gx7-0 ; ;1;1;0;2278.;325.;18.;0;0;0;0;0;0;0;0;;;;
costados\koa9\koa9gx70;ko-//-a9-gx7-0 ;M;1;1;0;2278.;325.;18.;0;0;0;0;0;0;0;0;;;;
wa;baldas fondo 2, 3, 5 y 6;;0;0;1;1162.;280.;18.;0;0;;;;;;;;;;
plb;puerta com·n batiente ;;0;0;1;2275.;297.;20.;0;1;2;192;0;0;0;0;0;0;;


La salida que da mi script es:

LST;1;
costados\koa9\koa9gx70;ko-//-a9-gx7-0 ; ;1;1;0;2278.;325.;18.;0;0;0;0;0;0;0;0;;;;
costados\koa9\koa9gx70;ko-//-a9-gx7-0 ;M;1;1;0;2278.;325.;18.;0;0;0;0;0;0;0;0;;;;
wa;baldas fondo 2, 3, 5 y 6;;0;0;1;1162.;280.;18.;0;0;;;;;;;;;;
plb;puerta com·n batiente ;;0;0;1;2274.;297.;20.;0;1;2;192;0;0;0;0;0;0;;


El script es este:
Código (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
rem Saber en que linea vamos a cambiar:
for /f "tokens=1 delims=:" %%# in ('type "file.txt" ^| findstr /i /n "puerta"') do (
set "n_line=%%#"
)
rem La linea
for /f "tokens=*" %%_ in ('type "file.txt" ^| findstr /i "puerta"') do (
set "linea=%%_"
)
set /a "count=0"
for /f "tokens=*" %%_ in (file.txt) do (
set /a count+=1
rem Mostrar normalmente:
if !count! lss !n_line! (
echo %%_
)
rem Sino, procesar:
if !count! equ !n_line! (
for /f "delims=; tokens=1-6*" %%a in ('echo !linea!') do (
set "numero=%%f"
set "numero=!numero:~0, -1!"
set /a numero-=1
echo %%a;%%b;;%%c;%%d;%%e;!numero!.;%%g
)
)
)


Obviamente tienes que volcar la salida a un archivo de texto nuevo, luego si quieres renombras.

Edit, esto también funciona:

Código (bash) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
for /f "delims=: tokens=1-2*" %%a in ('type "file.txt" ^| findstr /i /n "puerta"') do (
set "n_line=%%a"
)
for /f "tokens=*" %%_ in ('type "file.txt" ^| findstr /i "puerta"') do (
set "linea=%%_"
)
for /f "delims=; tokens=1-6*" %%a in ('echo !linea!') do (
set "numero=%%f"
set "numero=!numero:~0, -1!"
set /a numero-=1
call:edit %%a "%%b" %%c %%d %%e !numero! "%%g"
goto:eof
)
:edit
::
(
echo %n_line%
echo %1;%~2;;%3;%4;%5;%6.;%~7 %~8
echo w
echo e
) | edlin /b file.txt > nul 2>&1
goto:eof



Lo edita en el mismo lugar.
#1892
Scripting / Re: Modificar archivos de texto
11 Mayo 2010, 23:26 PM
Algunas preguntas.

Cada archivo solo contiene esto:
LST;1;
costados\koa9\koa9gx70;ko-//-a9-gx7-0 ; ;1;1;0;2278.;325.;18.;0;0;0;0;0;0;0;0;;;;
costados\koa9\koa9gx70;ko-//-a9-gx7-0 ;M;1;1;0;2278.;325.;18.;0;0;0;0;0;0;0;0;;;;
wa;baldas fondo 2, 3, 5 y 6;;0;0;1;1162.;280.;18.;0;0;;;;;;;;;;
plb;puerta com·n batiente ;;0;0;1;2275.;297.;20.;0;1;2;192;0;0;0;0;0;0;;


Es decir, ¿cada archivo solo contiene 1 vez la línea con "puerta"?

¿Podemos usar aplicaciones externas? (sed para Windows)
#1893
Foro Libre / Re: Ustedes cree en la masoria?
11 Mayo 2010, 05:07 AM
Yo no sé que es la masoria.
#1894
Puedes usar la función strtok() para separar la cadena por el carácter que desees, en este caso el carácter espacio.

Vas procesando cada palabra (token) y cuentas sus consonantes, por lo que podrás calcular el porcentaje, luego puedes meterlo en un vector dicho porcentaje, para luego implementar una búsqueda secuencial para encontrar el porcentaje mayor y la posición del token mayor.
#1896
No me cuadran los porcentajes.

"los" -> 2 consonantes de 3 letras, 2/3 = 0.66
"gusanos" -> 4 consonantes de 7, 4/7 = 0.57, ¿por qué 75%?
"de" -> 1 consonante de 2 letras, 1/2 = 0.5
"tierra" -> 3 consonantes de 6 letras, 3/6 = 0.5, ¿por qué 60 %?
#1897
Mal.

Las rutas se manejan en Windows con "\", no con "/", no estás en UNIX.

explorer .
o
start "" explorer .
#1898
Yo le preguntaría algo.
#1899
Mucho de estructuras de datos y algoritmos.
#1900
Es como si estuvieras explicando como definir variables y luego pasas a explicar Qt.