elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Acciones sobre archivos de texto. [Batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] 31 32 33 34 35 Ir Abajo Respuesta Imprimir
Autor Tema: Acciones sobre archivos de texto. [Batch]  (Leído 442,758 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #290 en: 10 Diciembre 2013, 17:38 pm »

@vicox19

Claro, solo se necesita lo siguiente:

  • Un ejemplo claro del archivo de entrada (el archivo donde quieres que se reemplace, se necesita para saber qué podemos modificar y que no).
  • El o los nombres de los archivos donde quieres que se realice el reemplazo.
  • Que especifiques claramente qué es lo que quieres que se reemplace.
  • Finalmente, un archivo de salida de ejemplo, es decir, el cómo quisieras que quedara.

Se necesita que especifiques eso claramente para empezar a trabajar. Sé que quizás ya lo has hecho anteriorente, pero no encuentro claro tu mensaje, así que por favor corrigelo.

Saludos.


« Última modificación: 10 Diciembre 2013, 17:46 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
vicox19

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #291 en: 10 Diciembre 2013, 17:57 pm »

ok, tratare de ser mas especifico.
archivo que quiero que se modifique:
city1.txt
contenido:
.....codigo......
##Other Properties
#
zipFileSourcePath=\\server1\BuildArchive\1.01\build_1.01.20.zip
.....codigo......

como este archivo tengo de 10 ciudades diferentes. city2, city3....city10

lo que quiero es que al correr el batch me pregunte:
CUAL ES LA VERSION DEL NUEVO BUILD DE HOY?:

yo inserte: 1.01.21

ese NUEVO numero tiene que ser reemplazado en los 10 archivos SOLO la parte del numero. osea, lo que espero que es que el city1.txt termine asi:
.....codigo......
##Other Properties
#
zipFileSourcePath=\\server1\BuildArchive\1.01\build_1.01.21.zip
.....codigo......

y haga lo mismo en los otros 10 archivos city2.txt, city3.txt.....city10.txt


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #292 en: 10 Diciembre 2013, 18:44 pm »

Bien, hice esto rápido.

Hice una carpeta con los siguientes archivos:

Código:
archivo1.txt
archivo10.txt
archivo2.txt
archivo3.txt
archivo4.txt
archivo5.txt
archivo6.txt
archivo7.txt
archivo8.txt
archivo9.txt

El interior del archivo de cada uno es el siguiente:

archivo1.txt:

Código:
.....codigo......     
##Other Properties    
#    
zipFileSourcePath=\\server1\BuildArchive\1.01\build_563456.zip
.....codigo......    

Y así para todos.

El código del batch es el siguiente:

Código:
@echo off

setlocal enabledelayedexpansion

rem Cambiar lo siguiente por la ruta de tus archivos
rem Por ejemplo: c:\instaladores
set "instaladores_path=.\instaladores"

:prompt
set /p "build_version=Cual es la versión del build actual? "
if "!build_version!"=="" (goto:prompt)

for /f "tokens=*" %%_ in ('dir /b "!instaladores_path!\*.txt"') do (
    for /f "tokens=*" %%s in ('type "!instaladores_path!\%%_"') do (
        echo %%s | find "zipFileSourcePath" > nul 2>&1 && (
            for /f "tokens=1,2 delims=_" %%# in ('echo %%s') do (
                echo %%#_!build_version!.zip >> "!instaladores_path!\temp_%%_"
            )
        ) || (
            echo %%s >> "!instaladores_path!\temp_%%_"
        )
    )
    copy /y "!instaladores_path!\temp_%%_" "!instaladores_path!\%%_"
    del "!instaladores_path!\temp_%%_"
)

Esta es una corrida y lo que realiza sobre un archivo:


Código:
C:\Users\Leo\Desktop\Baúl\Batch>code.cmd
Cual es la versi├│n del build actual? 1.2.3.4.56
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).
        1 archivo(s) copiado(s).

C:\Users\Leo\Desktop\Baúl\Batch>

Salida de los archivos:
Código:

C:\Users\Leo\Desktop\Baúl\Batch>type instaladores\archivo1.txt instaladores\archivo2.txt

instaladores\archivo1.txt


.....codigo......
##Other Properties
#
zipFileSourcePath=\\server1\BuildArchive\1.01\build_1.2.3.4.56.zip
.....codigo......

instaladores\archivo2.txt

.....codigo......
##Other Properties
#
zipFileSourcePath=\\server1\BuildArchive\1.01\build_1.2.3.4.56.zip
.....codigo......

C:\Users\Leo\Desktop\Baúl\Batch>

Antes de probarlo realiza un respaldo de los archivos donde vas a hacer el reemplazo. Usalo bajo tu propio riesgo.

Advertencia:

El código batch se basa en la línea que comienza:
Código:
zipFileSourcePath=\\server1\BuildArchive\1.01\build_1.2.3.4.56.zip 
Para que el código funcione correctamente en la línea anteriormente solo debe de haber un caracter '_', que es el separa zipFileSource... de build_, si hay una más el código quizás no funcione.

Así que procura que solo haya el que está enseguida de build_.

Saludos.  >:D
« Última modificación: 10 Diciembre 2013, 18:49 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
vicox19

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #293 en: 10 Diciembre 2013, 19:54 pm »

 :xD yeah!!!
si funciona!! eres un genio.
si hace el cambio en el numero de version, pero me sale un error de comando SWIFT y tuve que cambiar la variable que definiste por que no reconocia:
de: set "instaladores_path=.\instaladores"
a:   set "instaladores_path=C:\instaladores"

pero a pesar del error si hace el cambio de version. quizas se deba a mi version de windows? win7 o nose... corrida:

C:\instaladores>test.bat

Cual es la versi≤n del build actual? 10.00.00.1188

'Swift' is not recognized as an internal or external command,
operable program or batch file.
        1 file(s) copied.
'Swift' is not recognized as an internal or external command,
operable program or batch file.
        1 file(s) copied.
'Swift' is not recognized as an internal or external command,
operable program or batch file.
        1 file(s) copied.
'Swift' is not recognized as an internal or external command,
operable program or batch file.
        1 file(s) copied.
'Swift' is not recognized as an internal or external command,
operable program or batch file.
        1 file(s) copied.

y si no es mucha molestia. supongo que sobre el mismo codigo se puede modificar algo para lograr lo siguiente.

una vez que actualizo las versiones y lanzo los instaladores UNO POR UNO, a veces falla el instalador. cuando falla tengo que abrir el mismo archivo y cambiar un setting:
de: failOnSQLError=true
a:  failOnSQLError=false

y volver a lanzar para que esta vez A PESAR DEL ERROR instale el programa.
Basicamente lo mismo del anterior caso solo que es en otra parte dentro el archivo donde se hace el cambio a FALSE.

MIL GRACIAS DE ANTEMANO!
me ayudaste a optimizar de gran manera mi trabajo, por que si me olvidaba cambiar la version de un archivo y lanzaba el instalador con un build anterior, era todo un problema jeje, y esto es TODOS LOS DIAS  :P
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #294 en: 10 Diciembre 2013, 20:06 pm »

Coloca por favor el batch que utilizaste con las últimas modificaciones, para ver si localizo el error.

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
vicox19

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #295 en: 10 Diciembre 2013, 20:14 pm »

Código:
@echo off

setlocal enabledelayedexpansion

rem Cambiar lo siguiente por la ruta de tus archivos
rem Por ejemplo: c:\instaladores
set "instaladores_path=C:\instaladores"

:prompt
set /p "build_version=Cual es la versión del build actual? "
if "!build_version!"=="" (goto:prompt)

for /f "tokens=*" %%_ in ('dir /b "!instaladores_path!\*.txt"') do (
    for /f "tokens=*" %%s in ('type "!instaladores_path!\%%_"') do (
        echo %%s | find "zipFileSourcePath" > nul 2>&1 && (
            for /f "tokens=1,2 delims=_" %%# in ('echo %%s') do (
                echo %%#_!build_version!.zip >> "!instaladores_path!\temp_%%_"
            )
        ) || (
            echo %%s >> "!instaladores_path!\temp_%%_"
        )
    )
    copy /y "!instaladores_path!\temp_%%_" "!instaladores_path!\%%_"
    del "!instaladores_path!\temp_%%_"
)
« Última modificación: 10 Diciembre 2013, 20:35 pm por Leo Gutiérrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #296 en: 10 Diciembre 2013, 20:41 pm »

@vicox19

¿Cómo lanzas un instalador? Deja por favor un ejemplo.

Citar
una vez que actualizo las versiones y lanzo los instaladores UNO POR UNO, a veces falla el instalador. cuando falla tengo que abrir el mismo archivo y cambiar un setting:
de: failOnSQLError=true
a:  failOnSQLError=false

¿Con abrir el mismo archivo te refieres al archivo al cuál se le ha modificado la versión?

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
vicox19

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #297 en: 10 Diciembre 2013, 21:04 pm »

este es el proceso completo:
en mi folder instaladores tengo:
archivo1.txt
archivo1.bat
archivo10.txt
archivo10.bat
archivo2.txt
archivo2.bat
.....(1 bat para cada TXT)

los archivos .bat basicamente lo que hacen es ejecutar el instalador indicando que lea la configuracion definida en archivo.txt correspondiente. Obviamente el archivo de configuracion tiene muchas cosas, pero a mi solo me interesa trabajar en los 2 campos que te explico abajo.

entonces, como cada dia sale un nuevo bulid, tengo que abrir el archivo de config del instalador y cambiar a la version del nuevo build.

.....codigo......
##General Properties
failOnSQLError=true
.....codigo......     
##Other Properties     
#     
zipFileSourcePath=\\server1\BuildArchive\1.01\build_563456.zip
.....codigo......

con el primer codigo que hiciste TODO OK, el numero de version cambia.

en caso de que la instalacion falle, tengo que volver a abrir el archivo de configuracion y cambiar un valor a FALSE, ya no la version, solo cambiar el FailOnSqlError a FALSE (por eos quisiera que sea un archivo aparte por que NO siempre falla el build.)

.....codigo......
##General Properties
failOnSQLError=FALSE
.....codigo......     
##Other Properties     
#     
zipFileSourcePath=\\server1\BuildArchive\1.01\build_563456.zip
.....codigo......

una vez que esta en FALSE tengo que volver a lanzar el instalador pero esta vez NO fallara por que el FALSE que pusimos. Una vez que termine el proceso de instalacion, tengo que volver a poner a TRUE el setting para repetir al dia siguiente el proceso. Esta ultima parte de poner de FALSE a TRUE simplemente seria editar el batch que sirva para cambiar de TRUE a FALSE.

en resumen, necesitaria 3 batch:
1. para cambiar la version (OK)
2. para cambiar de failOnSQLError=TRUE a failOnSQLError=FALSE
3. para cambiar de failOnSQLError=FALSE a failOnSQLError=TRUE (similar al 2 invirtiendo las opciones)
En línea

sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #298 en: 11 Marzo 2014, 20:49 pm »

Esto es la biblia.
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
Rikosky

Desconectado Desconectado

Mensajes: 5



Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #299 en: 15 Marzo 2014, 15:13 pm »

Como se podria insertar una linea de texto al principio de un .txt?

Código:
echo %text23%>>Accesos.txt

Lo mismo que se haria con ese codigo, pero insertando la linea al principio y no al final, de forma que lo mas reciente este arriba y no al final del texto.
En línea

Páginas: 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] 31 32 33 34 35 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar archivos de texto [batch] [Perl] « 1 2 »
Scripting
bjeli1980 10 13,657 Último mensaje 17 Mayo 2010, 09:07 am
por bjeli1980
[BATCH] Ayuda guardando archivos de texto a php
Scripting
Geormarsch 2 4,321 Último mensaje 20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto
Scripting
Eleкtro 2 8,031 Último mensaje 15 Marzo 2014, 15:17 pm
por FranciskoAsdf
Como puedo arrastrar y concatenar archivos de texto en un BATCH
Scripting
PUCH84 6 9,920 Último mensaje 28 Abril 2014, 09:49 am
por PUCH84
Ayuda con batch para crear archivos de texto plano
Scripting
seu230 6 3,073 Último mensaje 5 Octubre 2018, 10:28 am
por seu230
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines