Vous êtes sur la page 1sur 18

Volcar cierto texto a un archivo de texto :

> crea un nuevo archivo y agrega texto


>> agrega texto a un archivo o lo crea sino existe

echo Hola > file.txt

> Adios.txt echo "Mi texto."

echo hola> arch.txt


o

> Adios.txt echo mi texto

@echo off
(
echo Linea1
echo Linea2
echo Linea3...
) > "file.txt"

Mostrar el contenido de un archivo de texto :


type texto.txt
for /f "tokens=*" %%x in (texto.txt) do (echo %%x)

Contar lineas de un archivo de texto ( tambin lineas en blanco) :


C:\>type texto.txt | find /v /c "" < texto.txt
7
C:\>

Contar lineas (sin lineas en blanco) :


@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

Obtener informacion del archivo de texto (tamao, fecha, atributos, etc) :


@echo off
for %%- in (texto.txt) do (
echo Nombre : %%~necho Extension : %%~xecho Unidad : %%~decho Ruta : %%~pecho Ruta completa : %%~secho Fecha-Hora del archivo : %%~techo Atributos : %%~aecho Nombre y extension : %%~nx)
pause>nul
exit /b 0

Otra forma :
@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 :


@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 :


@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

Crear archivos vacios (0 kb) :

lksdfljskdfljksdf > file.txt


fsutil file createnew file.txt 0
ver | find "kjflskdfjlsjkdf" > file.txt

C:\>copy con vacio.txt > nul


^Z
C:\>

Enumerar lineas de archivos (tambin lista lineas en blanco)


@echo off
:: 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

Enumerar lineas de archivos ( NO lista lineas en blanco)


@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 :


@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:


type texto.txt > texto2.txt
Siendo texto2.txt el nuevo archivo de texto.

Editar cierta linea de un archivo de texto :


@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 :


@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 :


echo 2,2,100,1c

Mover la primera linea al final del archivo de texto :


@echo off
(
echo 1,1,4M
echo e
) | edlin /b texto2.txt

Mover la primera linea a la segunda linea de un archivo :


@echo off
(
echo 1,1,3M
echo e
) | edlin /b texto2.txt

Mover la segunda linea a la primera linea :


@echo off
(
echo 2,2,1M
echo e
) | edlin /b texto2.txt

Mover la tercera linea a la primera :


@echo off
(
echo 3,3,1M
echo e
) | edlin /b texto2.txt

Visualizar solo las primeras 10 lineas de un archivo :


@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"
Perl es un lenguaje de programacin diseado por Larry Wall creado en 1987.
Perl toma caractersticas del C, del lenguaje interpretado shell (sh), AWK,
sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programacin.
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.

type texto.txt | find /i "Perl"

Contar las lineas que coincidan con cierta busqueda :


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 :


@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


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 :


Archivo de texto:
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
Sustituir "234" por algo :
@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

Contar la cantidad de archivos de texto en un directorio:


dir /b *.txt | find /c ".txt"
dir /b *.txt | findstr /n ".txt$"

Intercambiar cierto palabra por otra :


Cambiar todas las palabras que digan "Perl", por C :
@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 :


@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 :
PERL ES UN LENGUAJE DE PROGRAMACION DISEADO POR LARRY WALL CREADO
EN 1987.
PERL TOMA CARACTERISTICAS DEL C, DEL LENGUAJE INTERPRETADO SHELL (SH),
AWK, SED, LISP Y, EN UN GRADO INFERIOR, DE MUCHOS OTROS LENGUAJES DE
PROGRAMACION.
ESTRUCTURALMENTE, PERL ESTA 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 :
@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 :


@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

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


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

Requiere Nircmd.exe

Listar un archivo de forma inversa :


Archivo:
P
o
r
t
a
l
h
a
c
k
e
r
.
n
e
t
Y que nos lo devuelva en esta forma :
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
Cdigo:
@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:


@echo off
setlocal enabledelayedexpansion
for /f "tokens=1" %%_ in ('type "file.txt" ^| find /v /c ""') do (set "lineas=%%_";)
set /a "contador=0"
for /f "eol= tokens=* delims=" %%_ in (file.txt) do (
set /a "contador+=1"
set "linea!contador!=%< span=""> style="color: #448888;"><>%_"
)
for /l %%_ in (%lineas%,-1,1) do (
echo !linea%< span=""> style="color: #448888;"><>%_!
)

Agregar una palabra al principio y al final de una linea en un archivo de texto :


Archivo :
Leo
Laura

Lola
Lala
@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 :
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 :
type texto.txt | findstr "^...$"

Informacion sobre los archivos de texto :


assoc | find /i ".txt"
ftype | find /i "txtfile"

Caso practico :
Supongamos que tenemos un archivo de texto as :
laasd
laasd
ladf
lagfh
laghj
lafgh
Start-of-data
Leonardo
Gutierrez

Ramirez
End-of-data
kljdas
dasd
lksdf

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


@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 :


@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:


@echo off
<"file.txt" set /p "primera_linea="
set "primera_linea"

Pedir nmero de lnea al usuario y mostrarla por pantalla:


@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

Comparar dos archivos (file.txt y file2.txt) y mostrar el nmero de lnea y la lnea donde
se da la diferencia
@echo off
setlocal enabledelayedexpansion
set /a "linea=0"
for /f "tokens=1" %%g in (file.txt) do (
set /a "linea+=1"
set "_answer=%%g"
for /f "tokens=1" %%k in (file2.txt) do (if "%%g" equ "%%k" set "_answer=")
if defined _answer (
echo Diferencia(^s^) encontrada en la linea !linea! : < span="">!
REG3XP0!>"%%g"<>
)

)
set /p "="
exit /b 0;

Ejemplo de uso:
C:\>type file*
file.txt :
Leo
Itzel
Darwin
Yareli
Michelito
Maurilio
p**a

file2.txt :
Leo
Itzel
Darwin
Yareli
Michel
Maurilio

Ejecucin:
Diferencia(s) encontrada en la linea 5 : "Michelito"
Diferencia(s) encontrada en la linea 7 : "p**a"

Buscar un archivo en todos los discos disponibles y eliminarlo:


El siguiente cdigo encuentra las unidades de disco disponibles en el sistema, en seguida
busca el archivo a eliminar, en este caso yo lo llam "archivoloco.txt" slo para ilustrar.
El archivo lo tengo en las siguientes rutas :
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

Se trata de eliminarlo.
@echo off
rem Leo Gutierrez R.
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 (
dir /b %%i:\ > nul 2>&1 && (
for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
del /f /q "%%_"
)
)
)
pause>nul
exit /b 0

Y eso fue todo, si volviera a buscar los archivos en los distintos discos, esto obtendra:
No se encuentra el archivo
No se encuentra el archivo
No se encuentra el archivo
No se encuentra el archivo

Vous aimerez peut-être aussi