hola a todos amigos :) miren tengo un archivo txt con varias lineas ahora
lo q quiero es que por ejemplo tomar las cinco primeras lineas y mandarlo
a otro archivo, intente con este codigo: :¬¬
@echo off
cls
set /a r=0
for /f "tokens=*" %%i in (test5.txt) do @echo %%i && set /a r +=1 && if "%r%"=="5" @echo %%i>>1.txt
Este script se me ocurrio pero igualno funciona en realidad no tengo muchas ideas de como podria hacer agradeceria sugerencias ::)
un salu2 a todos ;)
Epale amigo que buena pregunta disculpa pero te voy a modificar
tan solo un poquitin tú codigo espero que no te molestes
xD Saludos
echo off
:: Creo el archivo, por que no existe aún
:: en tú caso como ya existe el archivo
:: omite estas primeras lineas
echo este es el texto de la linea 1 > texto.txt
echo estes es la linea 2 >> texto.txt
echo uff y asi puedo continuar hasta >> texto.txt
echo la linea 4 >> texto.txt
echo y sin parar hasta el final >> texto.txt
echo que tal dos lineas mas ^? >> texto.txt
echo bueno esta bien estas >> texto.txt
echo sera la ultima linea >> texto.txt
:: Aqui termina de escribir el archivo
echo %errorlevel% > nul
:: aquí comienza a correr tú scripts...
:: agrego el contador y lo igualamos a cero
set /a var=0
:: en este punto puedes agragar la direccion donde se encuantra el archivo
:: ejemplo:
:: set xD=c:\Document and....\dedos.txt
set xd=texto.txt
:: con el comando for listamos todas las lienas del archivo .txt
for /f "tokens=*" %%a in (%xd%) do set j=%%a && call :ini
:ini
:: luego con el contador listamos solo las primeras 5 lineas q pasaron por el for
if '%var%'=='5' goto fin
set /a var=var+1
:: pasamos las 5 primeras lineas al archivo llamado prueba.txt
echo %var% %j% >> prueba.txt
goto :eof
:fin
: {Y-este-es-el-Fin-xD}
.....
hola No_Nick excelente gracias por la respuesta ;) justo lo q estaba buscando
pero ahora tengo esta inquietud :¬¬ si por ejemplo quiero leer apartir de la linea 2 por ejemplo y solamente las 3 lineas consecutivas como podria hacer esa delimitacion.
Un salu2 amigo y nuevamente gracias por responder si se te ocurre algo
en buena hora ::)
... a esta linea le agregas un "skip=n" que
especifica el número de
líneas que hay que saltarse al principio
del archivo.
Citar
:: Solo modifica esta linea agregando el skip=n
:: La lógica del script quedaría así : si tienes 5 lineas en el .txt
:: -si comienzas por la linea 2 = entonces en el archivo .txt la linea 5 sera
:: 3 en el contador
for /f "tokens=* skip=2 " %%a in (%xd%) do set j=%%a
:: Lo demás queda igual
Saludos...
Muchas gracias amigo :D, mira estoy tratando de hacer lo siguiente tengo un
archivo con 5 preguntas, ahora lo estoy dividiendo cada pregunta en un archivo aparte, asi como me dijiste funciona perfectamente ;) pero para cada pregunta tengo q crear otro script y bueno yo lo quería implementar solo en un script, mi código es el siguiente:
@echo off
:: Esta variable es para capturar el nro de pregunta
set /a preg=1
:: esta es para saltar las lineas
set /a salta=1
:inicio
cls
set /a var=0
:: pregunto por el nro de pregunta y de acuerdo
:: a eso salto las lineas
if "%preg%"=="2" set /a salta=6
if "%preg%"=="3" set /a salta=6*2
if "%preg%"=="4" set /a salta=6*3
if "%preg%"=="5" set /a salta=6*4
:: con el comando for listamos todas las lienas del archivo .txt
for /f "skip=%salta% tokens=*" %%a in (test5.txt) do set j=%%a && call :ini
:ini
:: luego con el contador listamos solo las primeras 5 lineas q pasaron por el for
if '%var%'=='5' goto fin
set /a var=var+1
:: pasamos las 5 primeras lineas al archivo llamado prueba.txt
echo %j% >> P%preg%.txt
:: goto :eof
:fin
:: Aqui pregunto si es la ultima pregunta termina
if "%preg%" LEQ 5 goto salida
:: si no es la ultima aumenta el nro de pregunta
set /a preg+=1
:: regresamos al inicio para barrer las sigtes pregutnas
goto inicio
:salida
Sin embargo solo me toma la primera pregunta nada mas, el resto no las toma nose porque :-[ sedebe poder hacer .. bueno nos vemos
Salu2
ummm creo que tienes dos detalles en tú scripts
Citar
:: el operador de comparación a utilizar seria este NEQ
:: y debes agregar al if /I de manera de q le informes al bat
:: q estas haciendo una comparación
if /I "%preg%" NEQ "5" goto salida
El segundo detalle que veo es el contador fíjate
Citar
set /a preg+=1 -- el que tú tienes
::y estes es
set /a preg=%preg%+1 ---el que yo usaría
(creo que con ésto ya solucionas el problema...)
Pero aún así me tomo la molestia de modificar la forma de usar
el contador para optimizar el uso de la memoria.. (no es necesario q lo hagas es solo un ejemplo...
Citar
::Ejemplo contador
echo off
:::iguala en la primera linea el contador a cero SIEMPRE xD
set /a preg=0
::y nos saltamos por encima el contador
goto inicio
:contador
set /a preg=%preg%+1
goto :EOF
:inicio
:: lo llamamos para que nos asigne 1 valor a la variable %preg%
call :contador
::
:: aquí comenzaría tú scripts
echo PREGUNTA %preg%
:: aquí finaliza tú scripts
:: ya verificamos la variable %preg% que valor tiene
:: y así hasta que se cumpla la condición y nos vamos al fin
if /I "%preg%" NEQ "4" goto inicio
goto fin
:fin
:: esto por que ??
:: por que es mas fácil reutilizar el contador en cualquier lugar del scripts
:: ejemplo
:: lo igualo a cero y lo llamo otra vez
set /a preg=0
call :contador
echo y sigo escribiendo código xD
echo por que el contador ahora esta en
echo el numero %preg% otra vez
Saludos...
excelente muchas gracias amigo ya todo funciona oks ;)
si tengo alguna otra duda lo postearé bajo otro tema
bueno nuevamente gracias por responder
Salu2 ..... ::)