Necesito crear un .bat para buscar un carácter dentro de un .txt y poder modificar o remplazarlo

Necesito crear un .bat para buscar un carácter dentro de un .txt y poder modificar o remplazar, para poder desarrollar algo o trabajar con pstools.

Francisco Colina.

Respuesta

muchas gracias, pero en especifico necesito modificar un archivo de texto por console

Ejemplo:
Buscar "Boton_SS_Text_Size = 16" y poder modificar o remplazarlo

Boton_Color = 42A6BD

Boton_Text_Color = ffffff

Boton_Left = 7000
Boton_Top = 3000
Boton_Height = 1000
Boton_Width = 4800
Boton_Text_Size = 18

Boton_SS_Left = 700
Boton_SS_Top = 2000
Boton_SS_Height = 700
Boton_SS_Width = 5000@Fecha_Color = ffffff

Fecha_Left = 4000
Fecha_Top = 100
Fecha_Text_Size = 12

IdCliente_Left = 700
IdCliente_Top = 2000

Info_Fondo_Color = 66a4bc
Info_Text_Color = ffffff
Info_Text_Size = 24
Info_Left =
Info_Top =

Muchas gracias, pero en especifico necesito modificar un archivo de texto por console

Ejemplo:
Buscar "Boton_SS_Text_Size = 16" y poder modificar o remplazarlo

o buscar Info_Top = y agregarle un dato.

Boton_Color = 42A6BD

Boton_Text_Color = ffffff

Boton_Left = 7000
Boton_Top = 3000
Boton_Height = 1000
Boton_Width = 4800
Boton_Text_Size = 18

Boton_SS_Left = 700
Boton_SS_Top = 2000
Boton_SS_Height = 700
Boton_SS_Width = 5000@Fecha_Color = ffffff

Fecha_Left = 4000
Fecha_Top = 100
Fecha_Text_Size = 12

IdCliente_Left = 700
IdCliente_Top = 2000

Info_Fondo_Color = 66a4bc
Info_Text_Color = ffffff
Info_Text_Size = 24
Info_Left =
Info_Top =

La línea no siempre es la misma por eso necesito buscar por algún de los caracteres.

No sé si te he entendido bien pero vamos a intentar primero cambiar el valor que sigue al igual en una línea que diga:

Boton_SS_Text_Size = 16

en un archivo al que he llamado fc.txt. El hecho de que la línea tenga un "=" creo que impide usar el comando más sencillo de sustitución de caracteres en cadenas (algo como set var=%var:actual=nuevo% que permitiría cambiar en la variable var el valor "actual" por el valor "nuevo"). En el "snipet" que sigue puedes ver el contenido de fc.txt antes de ejecutar el bat, el contenido del propio bat y el contenido de kkk.txt después de ejecutar el bat. Si el resultado fuera el adecuado bastaría eliminar el "echo" que precede al copy en el comando final para que realizara la sustitución del fc.txt por el kkk.txt.

D:\BAT>type fc.bat
@echo off
Setlocal EnableDelayedExpansion
del kkk.txt
set valor=325
for /f "tokens=*" %%a in (fc.txt) do (call :revisar "%%a")
goto :fin
:revisar
for /f "tokens=1 delims= " %%x in ('echo %~1 ^| findstr "Boton_SS_Text_Size"') do (
echo %%x = %valor%>>kkk.txt&goto :EOF
)
echo %~1>>kkk.txt
goto :EOF
:fin
echo copy /y kkk.txt fc.txt
D:\BAT>type fc.txt
Boton_Color = 42A6BD
Boton_Text_Color = ffffff
Boton_Left = 7000
Boton_Top = 3000
Boton_Height = 1000
Boton_Width = 4800
Boton_Text_Size = 18
Boton_SS_Left = 700
Boton_SS_Top = 2000
Boton_SS_Height = 700
Boton_SS_Width = 5000@Fecha_Color = ffffff
Boton_SS_Text_Size = 16
Fecha_Left = 4000
Fecha_Top = 100
Fecha_Text_Size = 12
IdCliente_Left = 700
IdCliente_Top = 2000
Info_Fondo_Color = 66a4bc
Info_Text_Color = ffffff
Info_Text_Size = 24
Info_Left =
Info_Top =
D:\BAT>fc
copy /y kkk.txt fc.txt
D:\BAT>type kkk.txt
Boton_Color = 42A6BD
Boton_Text_Color = ffffff
Boton_Left = 7000
Boton_Top = 3000
Boton_Height = 1000
Boton_Width = 4800
Boton_Text_Size = 18
Boton_SS_Left = 700
Boton_SS_Top = 2000
Boton_SS_Height = 700
Boton_SS_Width = 5000@Fecha_Color = ffffff
Boton_SS_Text_Size = 325
Fecha_Left = 4000
Fecha_Top = 100
Fecha_Text_Size = 12
IdCliente_Left = 700
IdCliente_Top = 2000
Info_Fondo_Color = 66a4bc
Info_Text_Color = ffffff
Info_Text_Size = 24
Info_Left =
Info_Top =

Según puedes ver se ha cambiado "Boton_SS_Text_Size = 16" por "Boton_SS_Text_Size = 325" (valor asignado a la variable "valor" en el propio bat). Esto es solo para que te hagas una idea de una posible solución. Tanto la cadena a buscar como el valor a sustituir como el nombre del archivo se podrían pasar a un bat similar a este como parámetros de la línea de comandos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas