Tema destacado: Únete al Grupo Steam elhacker.NET
Autor
|
Tema: Acciones sobre archivos de texto. [Batch] (Leído 54,309 veces)
|
ariel_fnx
Desconectado
Mensajes: 4
|
Hola Leo. Tuve que salir a la tarde y recién llego a casa. La verdad que me sorprendiste al ver que ya lo habías resuelto. Nuevamente lo digo, sos realmente bueno en lo tuyo. Ahora voy a probarlo y luego te cuento cómo me fue. Mil millones de gracias, no te das una idea la mano que me diste. Hasta luego. Un abrazo.-
|
|
|
|
|
En línea
|
|
|
|
ariel_fnx
Desconectado
Mensajes: 4
|
Hola Leo. El código que me pasaste junto al programa que hiciste en C para calcular los precios unitarios funciona a la perfección, y he podido hacer andar la impresora fiscal correctamente. Dos millones de gracias por tu ayuda y por tu tiempo. Sólo me resta seguir aprendiendo. Gracias y éxitos.-
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
De nada, saludos.
|
|
|
|
|
En línea
|
|
|
|
Demente117
Desconectado
Mensajes: 3
|
Hola soy nuevo, primero no se si va aki en este pagina pero creo que si, perdonad por si me "ekivoko". tengo 2 dudas
1. Voy a intentar explikarme, creo que es sencillo (supongo!!!) quiero hacer una lista como en el comando dir /b pero que incluya las subcarpetas tambien. me explico: quiero conseguir hacer
@echo off dir /b /s>"nombre de archivo.txt"
pero que el resultado no incluya las rutas de los archivos, como hace por defecto
@echo off dir /b>"nombre del archivo.txt"
en definitiva pretendo hacer que quede solo el nombre del archivo en cada linea
he estado modificando (por que para crear no es que sea muy bueno) el codigo
@echo off setlocal enabledelayedexpansion for /f "tokens=* delims=" %%x in ('type nombre.txt') do ( set linea=%%x set linea=!linea:C:\Prueba=! call :show !linea! ) :show echo.%* >> nombre2.txt
pero no consigo mi proposito, mi idea es hacer una lista.txt y luego modificar el archivo quitando hasta el ultimo caracter "\" de las rutas pero no consigo hacer bien el codigo por que si cambio la carpeta donde ejecuto el bat, como tiene otra ruta no me sirve, tengo que hacer otros muxos bats para mi proposito lo kual es muuuuuu costosssoooooooo jejejejej
ALGUIEN me podria ayudar?? espero haberme explikado bien, mis preguntas serian:
1 ¿¿¿¿con el codigo anterior se podria hacer????? ¿¿¿¿se podria especificar que quiero cambiar todo lo que haya hasta el ultimo "\"????
2 ¿¿ se podria cambiar mas de una palabra en concreto con el mismo codigo anterior?? ejemplo para que me entendais mejor:
@echo off setlocal enabledelayedexpansion for /f "tokens=* delims=" %%x in ('type nombre.txt') do ( set linea=%%x set linea=!linea: .avi .mpg .mkv=! call :show !linea! ) :show echo.%* >> nombre2.txt
algo asi, que por ejemplo si se trata de una terminacion de archivo que no solo sea un tipo que sean todos los posibles.
ojala me pudierais ayudar!!!!! espero que si no he puesto este mensaje en mal sitio no tengo ni idea, me acabo de registrar para ver si alguien me puede ayudar con esto, es el primer cuadro de texto que he visto.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
Edita tu mensaje y pon el código con sus respectivas etiquetas para que se te pueda ayudar, o me veré en la penosa necesidad de eliminar el mensaje ya que no cumple las reglas (hay que leerlas).
Saludos.
|
|
|
|
|
En línea
|
|
|
|
Demente117
Desconectado
Mensajes: 3
|
PERDON por si me equivoko otra vez
documento original lo kreo haciendo un bat @echo off dir /b /s>Peliculas.txt lo ejecuto en la raiz de mi disco duro y me sale la lista que quiero,
H:\Peliculas\El asesino del calendario .film H:\Peliculas\El guerrero n§ 13 .film H:\Peliculas\Harry Potter 7 .film H:\Peliculas\Ip man (Maestro y mentor de Bruce Lee) .film H:\Peliculas\Jugar duro .film H:\Peliculas\La Dama del Lago .film H:\Peliculas\La Saga Crepusculo .film H:\Peliculas\Mongol .film H:\Peliculas\Resacon 2 .film H:\Peliculas\A\Algo pasa en las Vegas .film H:\Peliculas\A\Ali G Anda suelto .film H:\Peliculas\A\Almas Condenadas .film H:\Peliculas\A\Amores Perros .film H:\Peliculas\A\Ana Karenina .film H:\Peliculas\A\Analfabeto .film H:\Peliculas\A\Angeles Caidos .film H:\Peliculas\A\Aprendiz de Brujo .film H:\Peliculas\A\Aprendiz de Caballero .film
pero me gustaria que kedara asi
El asesino del calendario .film El guerrero n§ 13 .film Harry Potter 7 .film Ip man (Maestro y mentor de Bruce Lee) .film Jugar duro .film La Dama del Lago .film La Saga Crepusculo .film Mongol .film Resacon 2 .film Algo pasa en las Vegas .film Ali G Anda suelto .film Almas Condenadas .film Amores Perros .film Ana Karenina .film Analfabeto .film Angeles Caidos .film Aprendiz de Brujo .film Aprendiz de Caballero .film
quitando todas rutas de mis carpetas, mi problema es ese mismo tengo mi disco duro con una carpeta dentro que pone peliculas, y dentro de esta distribuida asi
Peliculas // 0-9 0-9 Dibujos A A Dibujos B B Dibujos
y mi segunda pregunta era esta @echo off setlocal enabledelayedexpansion for /f "tokens=* delims=" %%x in ('type Peliculas.txt') do ( set linea=%%x set linea=!linea:.avi.mpg.mp4.mpeg.mkv.film=! call :show !linea! ) :show echo. %* >> Peliculas3.txt perdon si me vuelvo a equivocar y no es esto lo que me estavas preguntando
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
No, no es lo que te estaba diciendo, cuando uno se registra en un foro, debe de leerse las reglas del foro, y del subforo. Pero bueno, te la paso por esta vez, para la otra simplemente tu mensaje se eliminará. Lo que te pedía es que el código debe de ponerse con su debido formato: echo hola Utilizando el GeSHi del editor de mensajes quedaría así: echo hola Respecto al código, se puede utilizar algo así: @echo off for /r c:\users\leo\batch\Peliculas %%_ in (*.*) do ( echo "%%~nx_" ) Siendo "c:\users\leo\batch\Peliculas" lo que tienes que cambiar a a la ruta donde están tus películas. Sobre tu segunda duda, no, no se puede, tienes que hacerlo uno por uno. Pon un ejemplo y lo resolvemos.
|
|
|
|
|
En línea
|
|
|
|
Demente117
Desconectado
Mensajes: 3
|
Gracias, muchas gracias Leo, si funciona, ala perfeccion muxisimas gracias
perdon por mi ignorancia voy a leerme las normas, espero preguntar algo correctamente a la proxima. (si vuelvo a necesitar ayuda) de nuevo MUXISIMAS GRACIAS
|
|
|
|
|
En línea
|
|
|
|
|
|
TheTroyanDark
Desconectado
Mensajes: 141
Echo "Aprendiendo Batch."
|
Hola a todos, tengo una duda al trabajar con archivos de texto. Tengo dos .txt y quiero que se imprima un tercer .txt con la linea de la primero y segundo archivo, te ilustro un ejemplo. 1.txtPalabra uno Palabra dos Palabra tres 2.txtVerbo uno Verbo dos verbo tres Y de resultado en el Tercer txt quedaría así. 3.txtPalabra uno Verbo uno Palabra dos Verbo dos Palabra tres Verbo tres Alguna soluciona para ello. Salu2 
|
|
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
Esto me funciona: C:\Users\leo\batch>type 1.txt Palabra uno Palabra dos Palabra tres C:\Users\leo\batch>type 2.txt Verbo uno Verbo dos verbo tres C:\Users\leo\batch>code.cmd C:\Users\leo\batch>type final.txt Palabra uno Verbo uno Palabra dos Verbo dos Palabra tres verbo tres C:\Users\leo\batch> @echo off setlocal enabledelayedexpansion for /f "tokens=*" %%_ in ('type "1.txt" ^| find /v /c ""') do set n_lines=%%_ for /l %%_ in (1,1,%n_lines%) do ( call:getLine %%_ "1.txt" set a=!text! call:getLine %%_ "2.txt" set b=!text! echo !a! !b! >> final.txt ) exit /b 0 :getLine set n=%1 if "%2"=="" ( echo Error, se necesitan dos parámetros exit /b 1 ) set /a cont=0 for /f "tokens=*" %%_ in ('type "%2"') do ( set /a cont+=1 if !cont! equ !n! ( set "text=%%_" goto:eof ) )
|
|
|
|
|
En línea
|
|
|
|
TheTroyanDark
Desconectado
Mensajes: 141
Echo "Aprendiendo Batch."
|
Hola Leo gracias, también encontré esta solución. @echo off setlocal EnableDelayedExpansion
set i=0 for /F "delims=" %%a in (txt1.txt) do ( set /A i+=1 set t1[!i!]=%%a ) set i=0 for /F "delims=" %%a in (txt2.txt) do ( set /A i+=1 set t2[!i!]=%%a ) for /L %%i in (1,1,%i%) do echo !t1[%%i]! !t2[%%i]!>> txt3.txt Salu2 :adios:
|
|
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 2.968
/^$/
|
Ya veo, la solución es mucho más corta, ya que usa arrays, en mi caso usé una pequeña función  Saludos
|
|
|
|
|
En línea
|
|
|
|
TheTroyanDark
Desconectado
Mensajes: 141
Echo "Aprendiendo Batch."
|
Si me salio mas corto  Ademas es muy practico porque si se quiere agregar un documento de texto mas solo se debe crear otro array Voy a ver que as se me ocurre para que lo listemos en este tema. También quería felicitarte por el gran trabajo que haces en este foro y en todos los otros. Salu2.
|
|
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
leb
Desconectado
Mensajes: 2
|
podrían ayudarme en el siguiente ejercicio?
Un bat que reproduzca una versión del cumpleaños feliz (por ejemplo en mp3) cuando el usuario que inicie la sesión cumpla años. Para ello, contamos con el fichero ‘Nacimientos.txt’ donde guardamos la fecha de nacimiento de cada usuario. El formato de cada entrada será:
Lmartin:dd/mm/aaaa
|
|
|
|
« Última modificación: 31 Enero 2012, 23:28 por leb »
|
En línea
|
|
|
|
|
|