Autor
|
Tema: Acciones sobre archivos de texto. [Batch] (Leído 445,158 veces)
|
amslop
Desconectado
Mensajes: 1
|
Hola! Acabo de ver el articulo sobre "Acciones sobre archivos de texto" y la verdad que me ha ayudado bastante, pero no consigo encontrar una solución a lo que quiero hacer (es una practica que me han mandado para clase, pero no tengo idea de como hacerla): Pidiendo una frase por teclado, buscar en dicha frase el una palabra que nos dan después. Había pensado meter la frase en una variable y luego, dentro de esa variable, cambiar los espacios por saltos de linea e introducirlo todo en un documento de texto. Muy bonito todo, pero no sé como meter una frase dentro de una variable ni como cambiar los espacios por saltos de línea. Espero que podáis ayudarme. Gracias
|
|
|
En línea
|
|
|
|
MauriH
Desconectado
Mensajes: 12
|
Hola Leo, Me parece muy bueno el post, pero no encontré (o de pronto no me di cuenta) alguna consulta q se relacione con mi problema, verás tengo dos archivos, uno de ellos es un banco de preguntas (examen) tipo opción múltiple, cada pregunta tiene 5 opciones, y el otro archivo es el archivo de respuestas, donde estan listadas todas las respuestas en el orden en q aparece las preguntas en el archivo de preguntas. Lo q quiero saber es como puedo yo hacer para poder buscar por medio de un archivo .bat todo lo q esta en el archivo de respuestas en el archivo de preguntas e ir marcando esas coincidencias con una palabra clave, quisiera q esa palabra clave figure antes y despues de la opcion correcta. No es necesario una palabra clave para marcar cada una de las opciones correctas, esta bien, de hecho mejor si es la misma para todas las coincidencias, espero haberme explicado. Gracias. Te mando una parte de lo q seria el archivo de preguntas y de respuestas, estos son respectivamente: Archivo de preguntas: El masaje cardiaco externo: • No se realiza en recién nacidos • Se realiza en la mitad superior del esternón en el adulto • Produce un flujo sanguíneo 25 % del normal • No esta indicado en la fibrilación ventricular sostenida • Todas las anteriores
La administración intracardiaca de drogas durante RCP: • Requiere mayor dosis de drogas • Puede producir lesión irreversible en el corazón • Es la vía de elección en la reanimación a tórax abierto • La vía de abordaje es paraesternal izquierda • Todas son ciertas
La adrenalina: • Posee efecto beta predominante • Se sintetiza en el hígado • Tiene mayor efecto en la acidosis metabolica • Aumenta la presión de perfusión durante la RCP • Todas
Para diagnosticar la circulación ineficaz: • El ECG es el método de elección • Palpar el pulso en la arteria femoral o carótida • Se han descrito alteraciones en el metabolismo de los ácidos grasos libres • Ausencia de reflejos fotomotores • Todas
En la evaluación preoperatoria de un paciente ASA I de 30 años es indispensable: • Solicitar un ECG de rutina • Abetalipoproteinemia • Realizar un examen clínico completo • Solicitar un coagulograma de rutina • Todas
|
Archivo de respuestas: • Todas las anteriores • Todas son ciertas • Se sintetiza en el hígado • Se han descrito alteraciones en el metabolismo de los ácidos grasos libres • Abetalipoproteinemia
|
Y quisiera obtener algo así: El masaje cardiaco externo: • No se realiza en recién nacidos • Se realiza en la mitad superior del esternón en el adulto • Produce un flujo sanguíneo 25 % del normal • No esta indicado en la fibrilación ventricular sostenida • monordi1Todas las anterioresmonordi2
La administración intracardiaca de drogas durante RCP: • Requiere mayor dosis de drogas • Puede producir lesión irreversible en el corazón • Es la vía de elección en la reanimación a tórax abierto • La vía de abordaje es paraesternal izquierda • monordi1Todas son ciertasmonordi2
La adrenalina: • Posee efecto beta predominante • monordi1Se sintetiza en el hígadomonordi2 • Tiene mayor efecto en la acidosis metabolica • Aumenta la presión de perfusión durante la RCP • Todas
Para diagnosticar la circulación ineficaz: • El ECG es el método de elección • Palpar el pulso en la arteria femoral o carótida • monordi1Se han descrito alteraciones en el metabolismo de los ácidos grasos libresmonordi2 • Ausencia de reflejos fotomotores • Todas
En la evaluación preoperatoria de un paciente ASA I de 30 años es indispensable: • Solicitar un ECG de rutina • monordi1Abetalipoproteinemiamonordi2 • Realizar un examen clínico completo • Solicitar un coagulograma de rutina • Todas
|
|
|
« Última modificación: 13 Septiembre 2013, 07:29 am por Leo Gutiérrez. »
|
En línea
|
|
|
|
pincharata
Desconectado
Mensajes: 2
|
Hola a todos, quisiera saber si pueden ayudarme con un archivo de texto donde todos los dias me dejan un log de la siguiente manera (aclaro que esta cortado pero tiene miles de filas): name-label ( RW) : XXXX01 memory-actual ( RO): 3435969740 VCPUs-number ( RO): name-label ( RW) : Control domain on host: ZZZZ01 memory-actual ( RO): 78695628 VCPUs-number ( RO): os-version (MRO): in database name-label ( RW) : Control domain on host: ZZZZ02 memory-actual ( RO): 78695628 VCPUs-number ( RO): os-version (MRO): in database name-label ( RW) : XXXX02 memory-actual ( RO): 6871943168 VCPUs-number ( RO): name-label ( RW) : XXXX03 memory-actual ( RO): 6871943577 VCPUs-number ( RO): name-label ( RW) : XXXX04 memory-actual ( RO): 6871943168 VCPUs-number ( RO): Lo que necesito hacer es que elimine el salto de linea y lo remplace por una coma, a excepcion de las líneas que empiezan con "name-label", tras lo cual el archivo deberia de quedar: name-label ( RW) : XXXX01, memory-actual ( RO): 3435969740, VCPUs-number ( RO): name-label ( RW) : Control domain on host: ZZZZ01, memory-actual ( RO): 78695628, VCPUs-number ( RO): , os-version (MRO): in database name-label ( RW) : Control domain on host: ZZZZ02, memory-actual ( RO): 78695628, VCPUs-number ( RO): , os-version (MRO): in database name-label ( RW) : XXXX02, memory-actual ( RO): 6871943168, VCPUs-number ( RO): name-label ( RW) : XXXX03, memory-actual ( RO): 6871943577, VCPUs-number ( RO): name-label ( RW) : XXXX04, memory-actual ( RO): 6871943168, VCPUs-number ( RO): Gracias a un aporte de Leo Gutierrez logro quitar el salto con el codigo: for /f "tokens=*" %%_ in (file.txt) do (<nul set /p "=%%_ "; >> listar2.txt) Muchas gracias.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
@pincharata A ver si te funciona esto. @echo off for /f "tokens=*" %%_ in (file2.txt) do ( echo %%_ | findstr /r "^name" > nul 2>&1 && ( echo. >> end.txt ) echo %%_ | findstr /r "^name" > nul 2>&1 && ( <nul set /p "=%%_ " >> end.txt ) || ( <nul set /p "=, %%_ " >> end.txt ) )
También podrías utilizar un script en Powershell: [String]$line = ""; foreach($line in $(Get-Content "$psscriptroot\file2.txt")) { $line = $line.Trim().TrimEnd().TrimStart(); if($line.StartsWith("name-label")) { Write-Host } if($line.StartsWith("name-label")) { Write-Host [${line}] -NoNewline } else { Write-Host [${line}] -NoNewline } }
@MauriH Lo verifico esta noche y te comento qué tal. Saludos.
|
|
« Última modificación: 13 Septiembre 2013, 07:11 am por Leo Gutiérrez. »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Hola Leo, Me parece muy bueno el post, pero no encontré (o de pronto no me di cuenta) alguna consulta q se relacione con mi problema, verás tengo dos archivos, uno de ellos es un banco de preguntas (examen) tipo opción múltiple, cada pregunta tiene 5 opciones, y el otro archivo es el archivo de respuestas, donde estan listadas todas las respuestas en el orden en q aparece las preguntas en el archivo de preguntas. Lo q quiero saber es como puedo yo hacer para poder buscar por medio de un archivo .bat todo lo q esta en el archivo de respuestas en el archivo de preguntas e ir marcando esas coincidencias con una palabra clave, quisiera q esa palabra clave figure antes y despues de la opcion correcta. No es necesario una palabra clave para marcar cada una de las opciones correctas, esta bien, de hecho mejor si es la misma para todas las coincidencias, espero haberme explicado. Gracias. Te mando una parte de lo q seria el archivo de preguntas y de respuestas, estos son respectivamente: Archivo de preguntas: El masaje cardiaco externo: • No se realiza en recién nacidos • Se realiza en la mitad superior del esternón en el adulto • Produce un flujo sanguíneo 25 % del normal • No esta indicado en la fibrilación ventricular sostenida • Todas las anteriores
La administración intracardiaca de drogas durante RCP: • Requiere mayor dosis de drogas • Puede producir lesión irreversible en el corazón • Es la vía de elección en la reanimación a tórax abierto • La vía de abordaje es paraesternal izquierda • Todas son ciertas
La adrenalina: • Posee efecto beta predominante • Se sintetiza en el hígado • Tiene mayor efecto en la acidosis metabolica • Aumenta la presión de perfusión durante la RCP • Todas
Para diagnosticar la circulación ineficaz: • El ECG es el método de elección • Palpar el pulso en la arteria femoral o carótida • Se han descrito alteraciones en el metabolismo de los ácidos grasos libres • Ausencia de reflejos fotomotores • Todas
En la evaluación preoperatoria de un paciente ASA I de 30 años es indispensable: • Solicitar un ECG de rutina • Abetalipoproteinemia • Realizar un examen clínico completo • Solicitar un coagulograma de rutina • Todas
|
Archivo de respuestas: • Todas las anteriores • Todas son ciertas • Se sintetiza en el hígado • Se han descrito alteraciones en el metabolismo de los ácidos grasos libres • Abetalipoproteinemia
|
Y quisiera obtener algo así: El masaje cardiaco externo: • No se realiza en recién nacidos • Se realiza en la mitad superior del esternón en el adulto • Produce un flujo sanguíneo 25 % del normal • No esta indicado en la fibrilación ventricular sostenida • monordi1Todas las anterioresmonordi2
La administración intracardiaca de drogas durante RCP: • Requiere mayor dosis de drogas • Puede producir lesión irreversible en el corazón • Es la vía de elección en la reanimación a tórax abierto • La vía de abordaje es paraesternal izquierda • monordi1Todas son ciertasmonordi2
La adrenalina: • Posee efecto beta predominante • monordi1Se sintetiza en el hígadomonordi2 • Tiene mayor efecto en la acidosis metabolica • Aumenta la presión de perfusión durante la RCP • Todas
Para diagnosticar la circulación ineficaz: • El ECG es el método de elección • Palpar el pulso en la arteria femoral o carótida • monordi1Se han descrito alteraciones en el metabolismo de los ácidos grasos libresmonordi2 • Ausencia de reflejos fotomotores • Todas
En la evaluación preoperatoria de un paciente ASA I de 30 años es indispensable: • Solicitar un ECG de rutina • monordi1Abetalipoproteinemiamonordi2 • Realizar un examen clínico completo • Solicitar un coagulograma de rutina • Todas
|
Hola @MauriH ¿Podrías por favor un ejemplo de cómo quisieras la salida del archivo final o de lo que quisieras obtener? Es que no me queda claro como quieres relacionar el archivo de preguntas y de respuestas con un archivo final. Saludos.
|
|
|
En línea
|
|
|
|
pincharata
Desconectado
Mensajes: 2
|
@pincharata A ver si te funciona esto. @echo off for /f "tokens=*" %%_ in (file2.txt) do ( echo %%_ | findstr /r "^name" > nul 2>&1 && ( echo. >> end.txt ) echo %%_ | findstr /r "^name" > nul 2>&1 && ( <nul set /p "=%%_ " >> end.txt ) || ( <nul set /p "=, %%_ " >> end.txt ) )
También podrías utilizar un script en Powershell: [String]$line = ""; foreach($line in $(Get-Content "$psscriptroot\file2.txt")) { $line = $line.Trim().TrimEnd().TrimStart(); if($line.StartsWith("name-label")) { Write-Host } if($line.StartsWith("name-label")) { Write-Host [${line}] -NoNewline } else { Write-Host [${line}] -NoNewline } }
@MauriH Lo verifico esta noche y te comento qué tal. Saludos. Leo, muchas gracias, pero lo acabo de ejecutar y verificar con mayor detenimiento y veo que repite en la salida el resultado de la búsqueda "name", por más que intento entender y modificar el script estoy muy lejos de ello y no logro corregirlo... lamento molestarte nuevamente a ver si podrás ayudarme. Utilizo el script en batch por que el de powershell no me funcionó en absoluto (la salida es por pantalla y no escribe en ningún archivo, puede ser?). La salida final que obtengo es: name-label ( RW) : XXXX01 , name-label ( RW) : XXXX01 , memory-actual ( RO): 3435969740 , VCPUs-number ( RO): name-label ( RW) : Control domain on host: ZZZZ01 , name-label ( RW) : Control domain on host: ZZZZ01 , memory-actual ( RO): 78695628 , VCPUs-number ( RO): , os-version (MRO): in database name-label ( RW) : Control domain on host: ZZZZ02 , name-label ( RW) : Control domain on host: ZZZZ02 , memory-actual ( RO): 78695628 , VCPUs-number ( RO): , os-version (MRO): in database name-label ( RW) : XXXX02 , name-label ( RW) : XXXX02 , memory-actual ( RO): 6871943168 , VCPUs-number ( RO): name-label ( RW) : XXXX03 , name-label ( RW) : XXXX03 , memory-actual ( RO): 6871943577 , VCPUs-number ( RO): name-label ( RW) : XXXX04 , name-label ( RW) : XXXX04 , memory-actual ( RO): 6871943168 , VCPUs-number ( RO):
|
|
« Última modificación: 13 Septiembre 2013, 16:55 pm por pincharata »
|
En línea
|
|
|
|
togangel
Desconectado
Mensajes: 2
|
Hola a todos un gran saludo, los felicito por este tutorial en el cual me he basado en aprender un poco de este tema. Sin embargo tengo una consuta que hacerles, ya que he buscado por todos lados y no logro encontrarlo ya que estoy chamaco en esto. Estoy buscando un Batch más reducido en el cual se este automatizando algunas configuraciones en el equipo, por ejemplo tengo este: @echo off color 0a Mode con cols=46 lines=28 Title .:: %computername% ::. - .:: %username% ::.
:ip set /p suc= Numero de area (ej. 290) : cls
set /p ter= Numero de terminal IP ( ej. 120 ) : cls
set /a suc2=%suc%-250 set ip=10.40.%suc2%.%ter% set maskar=255.255.255.0 set get=110.40.%suc2%.1 set dns1=110.30.2.22 set dns2=110.1.5.11
netsh interface ip set address name="Conexi¢n de rea local" source=static addr=%ip% mask=%maskar% gateway=%get% store=persistent netsh interface ip set dnsservers name="Conexi¢n de rea local" source=static addr=%dns1% netsh interface ip add dnsservers name="Conexi¢n de rea local" addr=%dns2% index=2
:vw cls echo Area %suc% Terminal %ter% echo. echo Ip %ip% echo Marcara %maskar% echo GateWay %get% echo DNS 1 %dns1% echo DNS 2 %dns2% timeout /nobreak 03
:pw cls set admn=Administrador set admp=Admin$2011.1 set usern=Usuario set userp=User$2011.1
net user "%admn%" %admp% echo Usuario %admn% echo Contrase a %admp% timeout /nobreak 03
net user "%usernn%" %userp% echo Usuario %usern% echo Contrase a %userp% timeout /nobreak 03
:fin cls tasklist>"%temp%\tsk.tmp" set tp="%temp%\tsk.tmp"
set p1=Firefox.exe set p2=explorer.exe set inst1=%homedrive%\programas\programa1.exe set inst2=%homedrive%\programas\programa2.exe
set ins=0
:p1 <"%tp%" find /c /i "%p1%"> NUL if %ERRORLEVEL% EQU 0 ( goto pok) else ( goto pno)
:pok cls color 0a echo El Programa %p1% Esta instalado correctamente pause>nul goto p2
:pno cls color 0c echo El Programa %p1% No se esta ejecutando correctamente echo. echo Presione 1 + [Enter] para instalarlo echo. set /p ins= if %ins% == 0 (goto p2) if %ins% == 1 (goto inst1)
:inst1 "%inst1%"
:p2 <"%tp%" find /c /i "%p2%"> NUL if %ERRORLEVEL% EQU 0 ( goto p2ok) else ( goto p2no)
:p2ok color 0a cls
echo El Programa %p2% Esta instalado correctamente pause>nul goto exit
:p2no cls color 0c echo El Programa %p2% No se esta ejecutando correctamente echo. echo Presione 1 + [Enter] para instalarlo echo. set /p ins= if %ins% == 0 (goto exit) if %ins% == 1 (goto inst2)
:inst2 "%inst2%"
:exit del /f /q %tp% exit
Aquí lo que estoy intentando es que al checar en Tasklist se encuentren los programas ejecutando, en caso contrario Tener la opción de Instalarlo desde un directorio en C:\bla\bla.exe. Sí me funciona muy bien este Batch que he hecho pero... La cuestión es si en la variable :fin se puede simplificar con algun for o tomar el nombre del programa y usarlo como una variable, ya que siento que esta muy extenso. Así mismo si se tomara como variable utilizarlo despues para otros usos, un ejemplo. Terminar con procesos no deseadosSin más por el momento, me gustaria tener algo de ayuda Genios!!! Muchas Gracias.
|
|
|
En línea
|
|
|
|
Pédrin-2
Desconectado
Mensajes: 171
|
Hola soy nuevo en esto, y quiero aprender lo veo muy interesante. Lo que necesito creo que no es dificil, despues de ver por encima lo que se hace.
Lo explico: Dentro de una carpeta tengo todo tipo de archivos, desde .avi, .flv, xls, etc..
que al ejecutar el batch me creara una carpeta " extensiones" y dentro creara por cada archivo real ( ejemplo: video 1.avi ) un ( txt ), pero con la misma extension del original Evidentemento el archivo creado no se vera nada, tamaño en carpeta 0.
No se si me he explicado bien
Un saludo y espero que podais ayudar a un novato
|
|
|
En línea
|
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender. Un Saludo
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Hola soy nuevo en esto, y quiero aprender lo veo muy interesante. Lo que necesito creo que no es dificil, despues de ver por encima lo que se hace.
Lo explico: Dentro de una carpeta tengo todo tipo de archivos, desde .avi, .flv, xls, etc..
que al ejecutar el batch me creara una carpeta " extensiones" y dentro creara por cada archivo real ( ejemplo: video 1.avi ) un ( txt ), pero con la misma extension del original Evidentemento el archivo creado no se vera nada, tamaño en carpeta 0.
No se si me he explicado bien
Un saludo y espero que podais ayudar a un novato
Hola @Pédrin-2, por favor deja un ejemplo de salida. O sea, déjame un ejemplo hipotético de cómo quedaría, por que la verdad no te he entendido esta parte: dentro creara por cada archivo real ( ejemplo: video 1.avi ) un ( txt ), pero con la misma extension del original
¿¿Cómo que un archivo txt pero con la misma extensión del archivo original? ¿Te refieres a que se crearía un archivo igual que el original pero vacío? Si es así esto podría servir: @echo off set "work_dir=trunk" if not exist %work_dir%\extensiones ( mkdir "%work_dir%\extensiones" && ( echo Directorio "%work_dir%\extensiones" creado ) ) pushd "%work_dir%" for /f "tokens=*" %%_ in ('dir /b /a-d .') do ( echo. > "extensiones\%%_" ) popd pause
|
|
« Última modificación: 15 Septiembre 2013, 19:13 pm por Leo Gutiérrez. »
|
En línea
|
|
|
|
Pédrin-2
Desconectado
Mensajes: 171
|
Hola Leo muchisimas gracias por ayudarme.
Tengo una carpeta: Mis Peliculas, dentro hay: spìderman.avi = 700 mb cars.avi = 700 mb foto1.jpg = 6 mb, etc...
el resultado dentro de esa misma carpeta seria: Carpeta: Extensiones dentro: spìderman.avi = 0 mb cars.avi = 0 mb foto1.jpg = 0 mb, etc...
Espero que se me entienda.
El ejemplo que me pones me crea dos carpetas una llamada trunk que no es necesaria y la otra de extensiones es la que necesito, pero el bat me dice que no encuentra nada.
Un saludo
|
|
|
En línea
|
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender. Un Saludo
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Modificar archivos de texto [batch] [Perl]
« 1 2 »
Scripting
|
bjeli1980
|
10
|
13,751
|
17 Mayo 2010, 09:07 am
por bjeli1980
|
|
|
[BATCH] Ayuda guardando archivos de texto a php
Scripting
|
Geormarsch
|
2
|
4,360
|
20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
|
|
|
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto
Scripting
|
Eleкtro
|
2
|
8,099
|
15 Marzo 2014, 15:17 pm
por FranciskoAsdf
|
|
|
Como puedo arrastrar y concatenar archivos de texto en un BATCH
Scripting
|
PUCH84
|
6
|
10,022
|
28 Abril 2014, 09:49 am
por PUCH84
|
|
|
Ayuda con batch para crear archivos de texto plano
Scripting
|
seu230
|
6
|
3,125
|
5 Octubre 2018, 10:28 am
por seu230
|
|