elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  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 15 16 ... 35 Ir Abajo Respuesta Imprimir
Autor Tema: Acciones sobre archivos de texto. [Batch]  (Leído 442,822 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Acciones sobre archivos de texto. [Batch]
« en: 24 Enero 2009, 00:30 am »

Manipular y visualizar informacion de archivos externos. por Leo Gutiérrez.



Atención

Cuando busquen ayuda, por favor dejar claramente una muestra de cómo está el archivo o lo que quieren extraer del archivo y como quieren que quede, para entendernos con más claridad.



Tomaremos como ejemplo el siguiente texto :


Perl es un lenguaje de programación diseñado por Larry Wall creado en 1987.
Perl toma características del C, del lenguaje interpretado shell (sh), AWK,
sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.

Estructuralmente, Perl está basado en un estilo de bloques como los del C
o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto
y no tener ninguna de las limitaciones de los otros lenguajes de script.


Que será TEXTO.TXT


Volcar cierto texto a un archivo de texto :

Código:
echo Hola > file.txt 
Código:
> Adios.txt echo "Mi texto."
Código:
@echo off
(
echo Linea1
echo Linea2
echo Linea3...
) > "file.txt"

Bash:
Código
  1. echo -e "Texto" > "file.txt"
Código
  1. echo -e "`ls -1`" >> "file.txt"
Código
  1. > "file.txt" echo -e "Hola mundo!"
Código
  1. cat <<EOF > "file.txt"
  2. Hola mundo cruel!
  3. Lineas
  4. Lineas
  5. EOF
Código
  1. (
  2. echo -e "Lineas";
  3. echo -e "Más lineas";
  4. echo -e "Más más lineas";
  5. ) > "file.txt"
  6.  

Mostrar el contenido de un archivo de texto :
Código:
type texto.txt
Código:
for /f "tokens=*" %%x in (texto.txt) do (echo %%x)

Contar lineas de un archivo de texto (Lineas en blanco tambien) :
Código:
C:\>type texto.txt | find /v /c "" < texto.txt
7

C:\>
Contar lineas (Sin lineas en blanco) :
Código:
@echo off
set /a contador=0
for /f "" %%x in (texto.txt) do (
call :contador %%x
)
echo Lineas : %contador%
pause>nul
goto:eof
:contador
set /a contador+=1
goto:eof

[/b]

Obtener informacion del archivo de texto (tamaño, fecha, atributos, etc) :
Código:
@echo off
for %%- in (texto.txt) do (
echo Nombre : %%~n-
echo Extension : %%~x-
echo Unidad : %%~d-
echo Ruta : %%~p-
echo Ruta completa : %%~s-
echo Fecha-Hora del archivo : %%~t-
echo Atributos : %%~a-
echo Nombre y extension : %%~nx-
)
pause>nul
exit /b 0

[/b]

Otra forma :


Código:
@echo off
call :info texto.txt
goto:eof
:info
echo Nombre : %~n1
echo Extension : %~x1
echo Unidad : %~d1
echo Ruta : %~p1
echo Ruta completa : %~s1
echo Fecha-Hora del archivo : %~t1
echo Atributos : %~a1
echo Nombre y extension : %~nx1
pause>nul
goto:eof


Contar caracteres de un archivo :
Código:
@echo off
set /a contador=0
set /a contadorL=0
for /f "tokens=*" %%x in (texto.txt) do (
set linea=%%x
call :contador %linea%
)
goto:eof
:contador
set /a contadorl+=1
if not defined linea (
echo %contador%
goto:eof
)
set linea=%linea:~1%
set /a contador+=1
goto:contador
Contar palabras de un archivo de texto :
Código:
 @ECHO OFF
::CONTADOR DE PALABRAS
::AUTOR: CARLOS
::USO: CONTAR.BAT ARCHIVO.TXT
::O ARRASTRE ARCHIVO.TXT Y COLOQUE SOBRE EL ICONO DEL SCRIPT.

SETLOCAL
SET "ARCHIVO=%~1"
SET /A "PALABRAS=0"
FOR /F "USEBACKQ TOKENS=*" %%A IN ("%ARCHIVO%") DO (
SET "LINEA=%%A"
IF DEFINED LINEA (
CALL :CONTA LINEA
)
)
ECHO.CANTIDAD_PALABRAS:%PALABRAS%
PAUSE
ENDLOCAL
GOTO :EOF

:CONTA
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "TOKENS=1*" %%B IN ("!%~1!") DO (
SET "PAL=%%B"
SET "RESTO=%%C"
IF DEFINED PAL (SET /A PALABRAS+=1)
IF DEFINED RESTO (CALL :CONTA RESTO)
)
ENDLOCAL & SET /A "PALABRAS=%PALABRAS%"
GOTO :EOF
Autor : Carlos.


Crear archivos vacios (0 kb) :
Manera brusca :
Código:
lksdfljskdfljksdf > file.txt
Código:
fsutil file createnew file.txt 0
Código:
ver | find "kjflskdfjlsjkdf" > file.txt

Código:
C:\>copy con vacio.txt > nul
^Z

C:\>
Enumerar lineas de archivos :

Lista lineas en blanco tambien.
Código:
@echo off
rem Mostrar lineas de archivos :
echo. > temp.txt
if ["%~1"]==[""] (
echo Pocos parametros!
goto:eof
)
for /f "skip=2 tokens=*" %%x in ('fc /c /n temp.txt "%~1" ^| findstr -v -mi "*****"') do (
echo %%x
)
del /f /q "temp.txt"
goto:eof


Este no lista lineas en blanco :

Código:
@echo off
if ["%~1"]==[""] (
echo Pocos parametros!
goto:eof
)
set /a linea=0
for /f "tokens=*" %%x in ('type "%~1"') do (
call :show %%x
)
goto:eof

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

Eliminar cierta linea de un archivo de texto :
Código:
@echo off
(
ECHO 2d
ECHO E
) | EDLIN /B texto.txt > nul 2>&1
En este caso eliminariamos la linea 2.

Copiar el contenido de un archivo de texto a otro:
Código:
type texto.txt > texto2.txt
Siendo texto2.txt el nuevo archivo de texto.

Editar cierta linea de un archivo de texto :

Código:
@echo off
(
echo 2
echo Gutierrez
echo w
echo e
) | edlin /b texto2.txt
Siendo "2" la linea que editaremos, y "Gutierrez" por lo que será cambiado el texto.

Copiar cierta linea al final del mismo archivo de texto :

Código:
@echo off
(
echo 1,1,100,1c
echo e
) | edlin /b texto2.txt
Se copiaria la linea 1 al final del archivo, si quieren copiar la linea 2 al final del archivo seria :
Código:
echo 2,2,100,1c
Mover la primera linea al final del archivo de texto :

Código:
@echo off
(
echo 1,1,4M
echo e
) | edlin /b texto2.txt
Mover la primera linea a la segunda linea de un archivo :
Código:
@echo off
(
echo 1,1,3M
echo e
) | edlin /b texto2.txt
Mover la segunda linea a la primera linea :
Código:
@echo off
(
echo 2,2,1M
echo e
) | edlin /b texto2.txt
Mover la tercera linea a la primera :

Código:
@echo off
(
echo 3,3,1M
echo e
) | edlin /b texto2.txt
Visualizar solo las primeras 10 lineas de un archivo :
Código:
@ECHO OFF
SET /A NLINES=0
FOR /F "TOKENS=*" %%X IN (%~1) DO (
CALL :SUB %%X
)
GOTO:EOF

:SUB
IF %NLINES% EQU 10 (GOTO:EOF)
SET /A NLINES+=1
ECHO %NLINES% : %*
GOTO:EOF
Visualizar una linea en la que sabemos que existen ciertas palabras:

Suponiendo que este es nuestro texto, y queremos visualizar todas las lineas que contengan "Perl"

Código:
Perl es un lenguaje de programación diseñado por Larry Wall creado en 1987. 
Perl toma características del C, del lenguaje interpretado shell (sh), AWK,
sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.

Estructuralmente, Perl está basado en un estilo de bloques como los del C
o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto
y no tener ninguna de las limitaciones de los otros lenguajes de script.
Código:
type texto.txt | find /i "Perl"
Contar las lineas que coincidan con cierta busqueda :
Código:
type texto.txt | find /i /c "Perl"
Tomando como ejemplo el texto anterior, nos dará el numero 3, que es el numero de lineas encontradas.

Leer datos dentro de un txt, compararlos y dar un resultado... es posible?
http://foro.portalhacker.net/index.php/topic,86703.new.html


Remover lineas en blanco de un archivo de texto :
Código:
@echo off
echo Mi archivo con lineas en blanco :
type "file.txt"
for /f %%x in ('type "file.txt"') do (
echo %%x >> file2.txt
)
echo.
echo Mi archivo sin lineas en blanco :
type file2.txt
Otra manera, usando expresiones regulares con findstr
Código:
findstr /v "^$" file.txt
^ : Inicio de linea.
$ : Fin de linea.
/v : Solo muestra lo que no coincida con la expresion.

Sustituir una columna en un archivo de texto :
Supongamos que tenemos un archivo de texto con el contenido :
Código:
123 234 345 456 567 678 789 890
123 234 345 456 567 678 789 890
123 234 345 456 567 678 789 890
123 234 345 456 567 678 789 890
Y queremos sustituir "234" por algo :

Código:
@echo off
type texto.txt
for /f "tokens=1-8" %%a in ('type texto.txt') do (
echo %%a "RockoX" %%c %%d %%e %%f %%g %%h >> texto2.txt
)
echo:
type texto2.txt
Tip provisto por Tomi Salmi.

Contar la cantidad de archivos de texto en un directorio:
Código:
dir /b *.txt | find /c ".txt"
Código:
dir /b *.txt | findstr /n ".txt$"
Intercambiar cierto palabra por otra :
Supongamos que queremos cambiar todas las palabras que digan "Perl", por C :
Código:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%x in ('type texto.txt') do (
set linea=%%x
set linea=!linea:Perl=C!
call :show !linea!
)
goto:eof
:show
echo %* >> out.txt
goto:eof

Cambiar todo el texto de un archivo de texto a mayusculas :
Código:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%x in ('type texto.txt') do (
set linea=%%x
call :code !linea!
)
goto:eof
:code
SET WORD=%*
if not defined word (Echo Error & goto:eof)
for %%x in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (call :rename %%x)
echo %word%
goto:Eof
:rename
call set word=%%word:%1=%1%%
goto:eof
La salida que da :
Código:
PERL ES UN LENGUAJE DE PROGRAMACI¾N DISE±ADO POR LARRY WALL CREADO EN 1987.
PERL TOMA CARACTERÝSTICAS DEL C, DEL LENGUAJE INTERPRETADO SHELL (SH), AWK,
SED, LISP Y, EN UN GRADO INFERIOR, DE MUCHOS OTROS LENGUAJES DE PROGRAMACI¾N.
ESTRUCTURALMENTE, PERL ESTß BASADO EN UN ESTILO DE BLOQUES COMO LOS DEL C
O AWK, Y FUE AMPLIAMENTE ADOPTADO POR SU DESTREZA EN EL PROCESADO DE TEXTO
Y NO TENER NINGUNA DE LAS LIMITACIONES DE LOS OTROS LENGUAJES DE SCRIPT.

Saber que lineas de un archivo de texto son las que estan vacias :

Código:
@echo off
for /f "tokens=*" %%x in ('type texto.txt ^| findstr /n "^$"') do (
echo %%x Linea vacia.
)

Cambiar todo el contenido de un archivo de texto a minusculas :
Código:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%x in ('type texto.txt') do (
set linea=%%x
call :code !linea!
)
goto:eof
:code
SET WORD=%*
if not defined word (Echo Error & goto:eof)
for %%x in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (call :rename %%x)
echo %word%
goto:Eof
:rename
call set word=%%word:%1=%1%%
goto:eof

Salida :
Código:
perl es un lenguaje de programaci¥n dise▒ado por larry wall creado en 1987.
perl toma caracter¦sticas del c, del lenguaje interpretado shell (sh), awk,
sed, lisp y, en un grado inferior, de muchos otros lenguajes de programaci¥n.
estructuralmente, perl est▀ basado en un estilo de bloques como los del c
o awk, y fue ampliamente adoptado por su destreza en el procesado de texto
y no tener ninguna de las limitaciones de los otros lenguajes de script.

Visualizar el contenido de un archivo de texto en una ventana :


Código:
@echo off
nircmd clipboard readfile "texto.txt"
nircmd infobox "~$clipboard$" "texto.txt"
exit /b 0

Requiere Nircmd.exe

Listar un archivo de forma inversa :
Código:
P
o
r
t
a
l
h
a
c
k
e
r
.
n
e
t

Y que no lo devuelva en esta forma :
Código:
      16: t
      15: e
      14: n
      13: .
      12: r
      11: e
      10: k
       9: c
       8: a
       7: h
       6: l
       5: a
       4: t
       3: r
       2: o
       1:*P
Código:
@echo off
for /f "tokens=1" %%x in ('type texto.txt ^| find /v /c ""') do (set /a lineas=%%x)
set /a lineas-=1
for /l %%x in (%lineas%, -1, 1) do (
(
echo %%x,%%xl
echo e
) | edlin /b texto.txt | find /v "Final del archivo de entrada" | find /v "%%x,%%xl" | find /v "*e"
)
pause>nul
Segunda forma, la mejor:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1" %%_ in ('type "file.txt" ^| find /v /c ""') do (set "lineas=%%_";)
  4. set /a "contador=0"
  5. for /f "eol= tokens=* delims=" %%_ in (file.txt) do (
  6. set /a "contador+=1"
  7. set "linea!contador!=% style="color: #448888;">%_"
  8. )
  9. for /l %%_ in (%lineas%,-1,1) do (
  10. echo !linea% style="color: #448888;">%_!
  11. )
  12.  
Agregar una palabra al principio y al final de una linea en un archivo de texto :

Supongamos que tenemos el siguiente texto :
Código:
Leo
Laura
Lola
Lala
Código:
@echo off
for /f "tokens=*" %%x in ('type texto.txt') do (echo Antes %%x Despues) >> temp.txt
type "temp.txt"
del /f /q "temp.txt"
goto:eof
Y la salida :
Código:
Antes Leo Despues
Antes Laura Despues
Antes Lola Despues
Antes Lala Despues

Listar solo las palabras que tengan 3 caracteres de longitud en un archivo de texto :
Código:
type texto.txt | findstr "^...$"
Tip, por Tomi Salmi.

Informacion sobre los archivos de texto :  
Código:
assoc | find /i ".txt"
ftype | find /i "txtfile"


Caso practico :
[/size]
Supongamos que tenemos un archivo de texto así :
Código:
laasd
laasd
ladf
lagfh
laghj
lafgh
Start-of-data
Leonardo
Gutierrez
Ramirez
End-of-data
kljdas
dasd
lksñdf

Y solo queremos mostrar lo que esta entre :
Start-of-data y End-of-data

Código:
@echo off
for /f "tokens=1 delims=:" %%x in ('type "texto.txt" ^| findstr /n "Start-of-data"') do (set /a inicio=%%x)
for /f "tokens=1 delims=:" %%x in ('type "texto.txt" ^| findstr /n "End-of-data"') do (set /a fin=%%x)
set /a inicio+=1
set /a fin-=1
for /f "tokens=2 delims=:" %%x in ('
^(
echo %inicio%^,%fin%l
echo e
^) ^|edlin /b texto.txt^| find /v "*%inicio%,%fin%l"^|find /v "Final del archivo de entrada"^|find /v "*e"') do (
echo %%x
)

Guardar las lineas de un archivo de texto en lineas independientes :
[/b]
Código:
@echo off
setlocal enabledelayedexpansion
set contador=0
for /f "eol= tokens=* delims=" %%x in (file.txt) do (
set /a contador+=1
set linea!contador!=%%x
)
set linea

Meter la primera linea en una variable:
Código
  1. @echo off
  2. <"file.txt" set /p "primera_linea="
  3. set "primera_linea"

Pedir número de línea al usuario y mostrarla por pantalla:
Código:
@echo off
:code
set /p "linea=Linea : "
if not defined linea goto:code
set /a "_linea=0"
for /f "tokens=*" %%_ in ('type file.txt') do (
call:show %%_
)
goto:eof
:show
set /a "_linea+=1"
if %_linea%==%linea% echo %*
goto:eof

Caso práctico:
http://foro.elhacker.net/programacion_general/ayuda_con_bat_leer_archico-t268569.0.html;msg1314595#new


Comparar dos archivos (file.txt y file2.txt) y mostrar el número de línea y la línea donde se da la diferencia.
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a "linea=0"
  4. for /f "tokens=1" %%g in (file.txt) do (
  5.   set /a "linea+=1"
  6.   set "_answer=%%g"
  7. for /f "tokens=1" %%k in (file2.txt)  do (if "%%g" equ "%%k" set "_answer=")
  8. if defined _answer (
  9. echo Diferencia(^s^) encontrada en la linea !linea! :  !REG3XP0!>"%%g"
  10. )
  11. )
  12. set /p "="
  13. exit /b 0;

Ejemplo de uso:
Código:
C:\>type file*

file.txt


Leo
Itzel
Darwin
Yareli
Michelito
Maurilio
p**a
file2.txt


Leo
Itzel
Darwin
Yareli
Michel
Maurilio

C:\>

Ejecución:
Código:
C:\>code
Diferencia(s) encontrada en la linea 5 :  "Michelito"
Diferencia(s) encontrada en la linea 7 :  "p**a"


C:\><

Buscar un archivo en todos los discos disponibles y eliminarlo:
El siguiente código encuentra las unidades de disco disponibles en el sistema, en seguida busca el archivo a eliminar, en este caso yo lo llamé "archivoloco.txt" sólo para ilustrar.

El archivo lo tengo en las siguientes rutas :

Código:
C:\>code
C:\Documents and Settings\Administrador\Escritorio\archivoloco.txt
C:\Documents and Settings\Administrador\Escritorio\Escuela\archivoloco.txt
D:\RECOVERY\archivoloco.txt
F:\problemas\archivoloco.txt
G:\psico\archivoloco.txt

C:\>

Se trata de eliminarlo.

Código
  1. @echo off
  2. rem Leo Gutierrez R.
  3. for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
  4. dir /b %%i:\ > nul 2>&1 && (
  5. for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
  6. del /f /q "%%_"
  7. )
  8. )
  9. )
  10. pause>nul
  11. exit /b 0

Y eso fue todo, si volviera a buscar los archivos en los distintos discos, esto obtendría:
Código:
C:\>lala
No se encuentra el archivo
No se encuentra el archivo
No se encuentra el archivo
No se encuentra el archivo

C:\>

Saludos.

Leer solo una parte de un fichero

http://foro.elhacker.net/scripting/leer_solo_una_parte_de_un_fichero_de_texto_iquestcomo-t296151.0.html

Añadir una línea al principio del archivo

http://foro.elhacker.net/scripting/comandoopcion_msdos_insertar_linea_en_archivo_txt_solucionado-t289992.0.html


Modificar el valor de una columna
http://foro.elhacker.net/scripting/ayudacon_modificacion_de_archivo_de_texto-t294900.0.html


http://foro.elhacker.net/scripting/modificar_archivos_de_texto_batch_perl-t293258.0.html

Contar renglones de archivo
http://foro.elhacker.net/scripting/contador_de_renglones_solucionado-t292853.0.html

Crear varios txt a patir de otro
http://foro.elhacker.net/scripting/batch_crear_varios_txt_a_partir_de_otro_txt_solucionado-t290418.0.html

Reportar archivos encontrados[/b]]Reportar archivos encontrados
http://foro.elhacker.net/scripting/reporte_en_batch-t277835.0.html

Quitar fin de linea
http://foro.elhacker.net/scripting/ayuda_com_archivo_de_texto_por_favorsolucionado-t277953.0.html


« Última modificación: 6 Enero 2012, 07:57 am por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SmartGenius

Desconectado Desconectado

Mensajes: 181


:P


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #1 en: 24 Enero 2009, 20:12 pm »

Muy bueno leonardo...Gracias por compartirlo  :D


En línea


vagosoft

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #2 en: 7 Julio 2009, 00:35 am »

Excelente  ;-)
... justo lo que buscaba !  :silbar:
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #3 en: 7 Julio 2009, 04:27 am »

gracias leonador, espero que me sirva para lo que quiero hacer con unos archivos de texto :D!!!!!

en muy buena hora posteaste la info :D!!!

gracias de nuevo ^^*!
En línea

Asdf debería ser algún tipo de función.
Yatch

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #4 en: 20 Julio 2009, 08:20 am »

Hola Buenas me gusto mucho este post pero tengo una duda si tengo un txt

con lel siguiente texto

Código:
1234#
blablabalbalb
blablablabl
balblabl
#
456546#
blablabalbalb
blablablabl
balblabl
#
45646#
blablabalbalb
blablablabl
balblabl
#
46456#
blablabalbalb
blablablabl
balblabl
#

como puedo borrar la linea desde el numero asta el segundo delimitador # por ejemplo

45646#
blablabalbalb
blablablabl
balblabl
#


« Última modificación: 13 Agosto 2009, 20:37 pm por Leo Gutierrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #5 en: 8 Agosto 2009, 06:36 am »

Aqui esta la solución:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1 delims=[]" %%_ in ('type "file.txt" ^| find /i /n "45646#"') do set "coincidencia=%%_"
  4. if not defined coincidencia (
  5. echo.No se encontro ninguna coincidencia "45646#"
  6. goto:eof
  7. )
  8. :: Meter lineas de archivo.
  9. set /a "contador=0"
  10. for /f "eol= tokens=* delims=" %%x in (file.txt) do (
  11. set /a "contador+=1"
  12. set linea!contador!=%% style="color: #448888;">x
  13. )
  14. for /l %%: in (%coincidencia%, 1, %contador%) do (
  15. if "!linea% style="color: #448888;">%:!"=="#" (
  16. set /a "coincidencia_final=%%:"
  17. goto:break
  18. )
  19. )
  20. :break
  21. if not defined coincidencia_final (
  22. echo.No se encontro ninguna coincidencia
  23. goto:eof
  24. )
  25. echo.Archivo normal:
  26. for /l %%: in (1,1, %contador%) do (echo %%: : !linea% style="color: #448888;">%:!)
  27. echo.Archivo modificado:
  28. for /l %%: in (1,1, %contador%) do (
  29. if %%: lss %coincidencia% (echo %%: : !linea% style="color: #448888;">%:!)
  30. if %%: gtr %coincidencia_final% (echo %%: !linea% style="color: #448888;">%:!)
  31. )
  32. pause>nul
  33. exit /b 0

Salida:

Código:
C:\>code.bat
Archivo normal:
1 : 1234#
2 : blablabalbalb
3 : blablablabl
4 : balblabl
5 : #
6 : 456546#
7 : blablabalbalb
8 : blablablabl
9 : balblabl
10 : #
11 : 45646#
12 : blablabalbalb
13 : blablablabl
14 : balblabl
15 : #
16 : 46456#
17 : blablabalbalb
18 : blablablabl
19 : balblabl
20 : #


Archivo modificado:
1 : 1234#
2 : blablabalbalb
3 : blablablabl
4 : balblabl
5 : #
6 : 456546#
7 : blablabalbalb
8 : blablablabl
9 : balblabl
10 : #
16 46456#
17 blablabalbalb
18 blablablabl
19 balblabl
20 #

C:\>

Modifica el script a tu conveniencia.

Aquí está la solución en PERL:
Código
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. $/ = '';
  5. if(!@ARGV)
  6. {
  7. print "perl pl.pl \"archivo-a-editar\"\n";
  8. exit(1);
  9. }
  10. while(<>)
  11. {
  12.        s/45646#.*?#\n//s;
  13.        print;
  14. }
Código:
leo@lein:~/Escritorio$ perl pl.pl file.txt
1234#
blablabalbalb
blablablabl
balblabl
#
456546#
blablabalbalb
blablablabl
balblabl
#
46456#
blablabalbalb
blablablabl
balblabl
#
leo@lein:~/Escritorio$
« Última modificación: 9 Agosto 2009, 20:17 pm por Leo Gutierrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
KamuiDNA

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #6 en: 13 Agosto 2009, 20:03 pm »

Hola buenos dias , tengo una duda, espero me puedan auxiliar, tengo el siguietne archivo es un TXT y tiene lo siguiente:

Código:
TOA5	CR200Series	CR2xx		v06	WX-SI-06_test.C	18422	Public									
TIMESTAMP RECORD Vel_Viento Dir_Viento Temperatura Wind_Chill Heat_Index P_rocio Hum_Relativa Evto Pres_Bar Rad_Solar Precipitacion Bateria Latitud Longitud Altitud
TS RN Km/h º ºC ºC ºC ºC % mm/h mB W/m2 mm Volts

03/08/2009 10:58 41 3.599 43.06523 23.57434 27.37795 18.57707 13.77606 34.56199 0 793.016 0 0 12.67301 19.74977 88.70969 35



y deseo que me de la siguiente salida si es posible:


3.599
43.06523
23.57434
27.37795
18.57707
13.77606
34.56199
0
793.019
0


he intentado pero la verdad soy muy noob en cuanto a la programacion, espero puedan ayudarme, gracias de antemano.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #7 en: 13 Agosto 2009, 20:35 pm »

Hola, en Batch podríamos hacer algo así.

Suponiendo que contamos con "file.txt", cuyo contenido es:
Código:
TOA5	CR200Series	CR2xx		v06	WX-SI-06_test.C	18422	Public									
TIMESTAMP RECORD Vel_Viento Dir_Viento Temperatura Wind_Chill Heat_Index P_rocio Hum_Relativa Evto Pres_Bar Rad_Solar Precipitacion Bateria Latitud Longitud Altitud
TS RN Km/h º ºC ºC ºC ºC % mm/h mB W/m2 mm Volts

03/08/2009 10:58 41 3.599 43.06523 23.57434 27.37795 18.57707 13.77606 34.56199 0 793.016 0 0 12.67301 19.74977 88.70969 35

Y solo queremos mostrar los números así:
Código:
3.599
43.06523
23.57434
27.37795
18.57707
13.77606
34.56199
0
793.019
0
...
Código
  1. [code=dos]@echo off
  2. for /f "tokens=3*" %%a in ('type "file.txt" ^| find /i "%date:~-4%"') do set "variable=%%a %%b"
  3. for %%_ in (%variable%) do echo %%_
  4. set /p =
  5. exit /b 0
Salida:
Código:
C:\>code.bat
41
3.599
43.06523
23.57434
27.37795
18.57707
13.77606
34.56199
0
793.016
0
0
12.67301
19.74977
88.70969
35


C:\>

Edit:

He editado el código.[/code]
« Última modificación: 13 Agosto 2009, 20:45 pm por Leo Gutierrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
KamuiDNA

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #8 en: 13 Agosto 2009, 20:45 pm »

Gracias

En seguida lo pruebo y comento los resultados =D muchas gracias.!!!!!
En línea

KamuiDNA

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #9 en: 13 Agosto 2009, 20:52 pm »

Ya nada mas me queda una duda, lo que deseo hacer es crear un archivo XML  con los datos obtenidos en el programa que me ayudaron a hacer, es posible hacer esto desde batch , segun estaba viendo si es posible unicamente agrego el texto de mis etiquetas XML y guardo el archivo como XML,

La duda concreta que tengo es posible crear archivos con Batch en formato XML mediante el bloc de notas ?  solo tengo esa duda, si es posible para buscar la informacion necesaria para no abusar de su ayuda  =)

Muchas gracias el programa  si me dio la salida que esperaba ^^
En línea

Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 35 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar archivos de texto [batch] [Perl] « 1 2 »
Scripting
bjeli1980 10 13,658 Último mensaje 17 Mayo 2010, 09:07 am
por bjeli1980
[BATCH] Ayuda guardando archivos de texto a php
Scripting
Geormarsch 2 4,321 Último mensaje 20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto
Scripting
Eleкtro 2 8,034 Último mensaje 15 Marzo 2014, 15:17 pm
por FranciskoAsdf
Como puedo arrastrar y concatenar archivos de texto en un BATCH
Scripting
PUCH84 6 9,923 Último mensaje 28 Abril 2014, 09:49 am
por PUCH84
Ayuda con batch para crear archivos de texto plano
Scripting
seu230 6 3,076 Último mensaje 5 Octubre 2018, 10:28 am
por seu230
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines