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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  BAT. Cambiar 2 palabras en un txt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: BAT. Cambiar 2 palabras en un txt  (Leído 6,859 veces)
Pela667

Desconectado Desconectado

Mensajes: 2


Ver Perfil
BAT. Cambiar 2 palabras en un txt
« en: 24 Enero 2014, 19:43 pm »

Hola muchachada.
De vez en cuando consulto este foro y mas de una vez me sacaron del apuro.
Esta vez no tuve suerte, ya que lo que estoy necesitando no lo pude encontrar.
El tems es que necesito reemplazar 2 palabras en un txt, y hasta donde llegan mis muy basicos conocimientos de programación, llego a cambiar solo uno.
el codigo es el siguiente, a ver si me pueden tirar una soga.

Código:
@echo off
setlocal enabledelayedexpansion
attrib -r weather.txt
set num1=Race1
for /f "tokens=*" %%A in (weather.txt) do (set "resultado=%%A")&call :sub
copy salida.txt weather.txt
del salida.txt
attrib +r weather.txt
goto:eof
:sub
echo !resultado:Qualify2=%num1%!>>salida.txt
goto:eof

Esto me cambia Qualify2 por Race1, y funciona ok.
A su vez, necesito agregar otra palabra a cambiar, pero no se como se trabaja con mas de una variable, o si existe otra manera de hacerlo.
Espero haber sido claro.
Desde ya, muchisimas gracias!


« Última modificación: 27 Enero 2014, 14:01 pm por Eleкtro » En línea

Pela667

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: BAT. Cambiar 2 palabras en un txt
« Respuesta #1 en: 24 Enero 2014, 21:38 pm »

bueno, encontre una manera malisima de que funcione, pero si alguien se copa en mejorar este enchastre, bienvenido.
hice esto, ya se que me gane todas las puteadas, pero es lo que hay...
Código:
@echo off

setlocal enabledelayedexpansion
start GTR2WGen.exe
ping -n 3 127.0.0.1 > null
setlocal enabledelayedexpansion
attrib -r weather.txt
set num1=Race1
set num2=Race2
set num3=Race1

for /f "tokens=*" %%A in (weather.txt) do (set "resultado=%%A")&call :sub
for /f "tokens=*" %%A in (salida.txt) do (set "resultado2=%%A")&call :sub2
for /f "tokens=*" %%A in (final.txt) do (set "resultado2=%%A")&call :sub3
copy fin.txt weather.txt
attrib +r weather.txt
del null
del GTR2WGenLog.txt

:sub
echo !resultado:Qualify2=%num1%!>>salida.txt
goto:eof

:sub2
echo !resultado2:Race=%num2%!>>final.txt
goto:eof

:sub3
echo !resultado2:Race21=%num3%!>>fin.txt
goto:eof


el ping es para que me haga una pausa y le da tiempo al exe a generar los archivos que despues modifico... es la unica que encontre para hacer.
y por algun motivo, cuando modifico el primer race1, al buscar el race para cambiarlo por race2, me modificaba el race1 por race21... ni idea el motivo, pero cree un txt nuevo y lo solucione...


« Última modificación: 24 Enero 2014, 21:40 pm por Pela667 » En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: BAT. Cambiar 2 palabras en un txt
« Respuesta #2 en: 26 Enero 2014, 14:20 pm »

Ufff Pela667, te has complicado mucho, mira a ver si de este modo te sirve:

Código:
@echo off
setlocal enabledelayedexpansion
attrib -r weather.txt
set num1=Race1
set num2=Race2
for /f "tokens=*" %%A in (weather.txt) do (set resultado=%%A && call :sub)
copy salida.txt weather.txt
del salida.txt
attrib +r weather.txt
goto:eof
:sub
set resultado=!resultado:Qualify1=%num1%!
set resultado=!resultado:Qualify2=%num2%!
echo %resultado%>>salida.txt
goto:eof

dentro de ":sub" puedes poner tantas cosas como quieras cambiar.


Un saludo
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.775



Ver Perfil
Re: BAT. Cambiar 2 palabras en un txt
« Respuesta #3 en: 27 Enero 2014, 14:36 pm »

Acerca del reemplazamiento de palabras en un archivo de texto, ya te han dado una solución, pero siempre está bien mostrarle otras alternativas y enfoques a la persona que tiene dudas y por eso yo te habría sugerido diréctamente cualquier otro lenguaje que no sea Batch (uno sencillo que puedes usar es VBS), te muestro un ejemplo para reemplazar palabras:

Código
  1. Set FSO     = CreateObject("Scripting.FileSystemObject")
  2. OldTextFile = ".\Archivo.txt"
  3. NewTextFile = ".\Nuevo Archivo.txt"
  4. ReplaceFrom = "Hello"
  5. ReplaceTo   = "Aló"
  6.  
  7. FSO.CreateTextFile(NewTextFile, 2). _
  8. Write(Replace(FSO.OpenTextFile(OldTextFile, 1).ReadAll(), _
  9.  ReplaceFrom, ReplaceTo, 1, -1, vbTextCompare))


De todas formas también podrías usar la función "RSA" para reemplazar palabras, de esta rutina que codeé para utilizar en Batch ~> [BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto

Ejemplo de uso:
Código:
Call :TEXTMAN RSA "Archivo.txt" "ElHacker.net" "LeJuakér.né"

Citar
Código:
@Echo OFF

:: TEXT MANIPULATOR ROUTINE v0.5
:: By Elektro
 
:: SYNTAX:
::
:: TEXTMAN [ACTION] [LINE(S)] [FILE] [TEXT]
::
:: * [LINE(S)] parameter is Optional for some actions
:: * [TEXT] parameter is Optional for some actions
 
:: ACTIONS:
::
::  RSA = REPLACE_STRING_ALL * Replace word from all lines.
 
:: EXAMPLES:
::
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
::                                                                         ::
:: Replace the words "Elektro" to "H@cker" in all lines.                   ::
:: Call :TEXTMAN RSA "Test.txt" "Elektro" "H@cker"                         ::
::                                                                         ::
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
 

:TEXTMAN
(SET /A "A=0", "LINE=0", "TOTAL_LINES=0")  &  (CALL :%~1 %* || (ECHO Invalid parameter & Exit /B 1)) & (GOTO:EOF)
:RSA
(For /F "tokens=1* delims=]" %%A in ('type "%~2" ^| find /n /v ""') DO (CALL SET "STRING=%%B" && (if "%%B" EQU "" (Echo+>> "%~2.NEW") ELSE ((CALL ECHO %%STRING:%~3=%~4%%)>>"%~2.NEW")))) && (CALL :RENAMER "%~2") & (GOTO:EOF)
:RENAMER
(REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~1.BAK" "%TEMP%\" >NUL) & (REN "%~1.NEW" "%~nx1") & (GOTO:EOF)




Código:
start GTR2WGen.exe
ping -n 3 127.0.0.1 > null

Citar
el ping es para que me haga una pausa y le da tiempo al exe a generar los archivos que despues modifico

Te sugiero que leas la sección de ayuda de cada comando que vayas a usar, para no acabar haciendo cosas sin sentido.

Cita de: Start /?
Código:
Start /?

WAIT        Iniciar aplicación y esperar a que finalice comando o programa

Así pues, esta sería la orden:
Código:
Start /W "Título" "GTR2WGen.exe"
(Y eliminas el ping, obvio)

Hay varías cosas más erroneas en los códigos que has mostrado (en las lineas del FOR sobre todo) pero no entraré más en detalles ya que te dí otra solución mejor que Batch y el compañero @Almapa ya te arregló esos otros errores que tuviste.

Saludos!
« Última modificación: 27 Enero 2014, 14:48 pm por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
palabras
Java
andaluz 7 4,960 Último mensaje 14 Abril 2010, 11:21 am
por Leyer
Sustituir palabras en palabras...
Java
soser 4 4,964 Último mensaje 18 Julio 2011, 02:06 am
por Valkyr
transformar y cambiar las palabras de un archivo.txt con java
Ejercicios
roby79 0 6,345 Último mensaje 11 Mayo 2012, 04:15 am
por roby79
Cambiar palabras de un archivo TXT « 1 2 3 »
.NET (C#, VB.NET, ASP)
elqueteconte 20 9,973 Último mensaje 5 Noviembre 2015, 21:29 pm
por elqueteconte
Cambiar una o varias palabras dentro de un TXT
Scripting
VTRPE 6 3,199 Último mensaje 8 Agosto 2022, 22:57 pm
por VTRPE
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines