Manipular y visualizar informacion de archivos externos con un BAT.
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” 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 MONTIERS ::USO: CONTAR.BAT ARCHIVO.TXT ::O ARRASTRE ARCHIVO.TXT Y COLOQUE SOBRE EL ICONO DEL SCRIPT. SETLOCAL :CONTA 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 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 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 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. 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 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] 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 : 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:
@echo off
<”file.txt” set /p “primera_linea=” set “primera_linea” |
Visualizar solo la línea 3 o la que se desee:
Código:
@echo off
for /f “tokens=* skip=2″ %%_ in (file.txt) do ( echo %%_ goto:next ) :next rem Demas codigo… Lo mismo pero con EDLIN: Código:
@echo off
( echo 3,3l echo e ) | edlin /b file2.txt intercambiar una palabra por otra usando Edlin
Código:
C:\>edlin file.txt
Final del archivo de entrada *? Editar línea número_línea Anexar [número_líneas]A Copiar [línea_inicio],[línea_fin],a_línea[,veces]C Eliminar [línea_inicio][,línea_fin]D Acabar (guardar archivo) E Insert ar [línea]I Listar [línea_inicio][,línea_fin]L Mover [línea_inicio],[línea_fin],tolineM Página [línea_inicio][,línea_fin]P Cerrar (descartar los cambios) Q Reemplazar [línea_inicio][,línea_fin][?]R[texto_viejo][CTRL+Ztextonuevo] Buscar [línea_inicio][,línea_fin][?]Stexto Transferir [a_línea]T[unidad:][ruta]archivo Escribir [número_líneas]W *e C:\> |
Fuente:http://foro.elhacker.net/scripting/acciones_sobre_archivos_de_texto_batch-t242748.0.html;msg1253007
Tuitear 4.580 Veces leído 0 comentarios |
20 diciembre 2009 en Informática | tags: Informática |