¿Proceso por lotes Bat para modificar el contenido de líneas específicas de documentos de texto?
Puede utilizar el comando for y if en el procesamiento por lotes para completar esta tarea. Los pasos específicos son los siguientes:
@echo off
setlocal enableelayedexpansion
set target="d:\tt\*.tog"
establecer patrón1=4
establecer contenido1=7701
establecer patrón2=-6
establecer contenido2=9912
para / r % target% %%a en (*) hacer (
establecer recuento = 0
para /f "delims=" %%b en (%%a) hacer (
establecer /a recuento+=1
if !count!==%pattern1% (
echo %content1%>>temp.txt
) más si !count!==%pattern2% (
echo %content2%>>temp.txt
) más (
echo %% b> >temp.txt
)
)
mover /y temp.txt "%%~dpa%%~na.tog" >nul
)
Entre ellos, %target% representa los archivos de destino que deben modificarse en lotes, y %pattern1% y %pattern2% representan respectivamente la cuarta línea, la sexta línea desde la parte inferior y el siguiente contenido que debe modificarse% content1% y% content2% representan respectivamente el contenido que se reemplazará.
El código utiliza dos bucles: el primer bucle for se utiliza para recorrer todos los archivos .tog en el directorio de destino; el segundo bucle for se utiliza para recorrer todas las líneas de cada archivo y modificarlas cuando sea necesario. Realizar las correspondientes operaciones en las filas. A través del recuento de variables, si la línea actual es la línea que necesita modificarse, el nuevo contenido se enviará a un archivo temporal temp.txt; de lo contrario, la línea actual se generará tal cual; Finalmente, cambie el nombre del archivo temporal al nombre del archivo original para completar la modificación.
Tenga en cuenta que este código puede convertir todas las letras mayúsculas del nombre del archivo original a letras minúsculas. Si necesita conservar las mayúsculas y minúsculas del nombre del archivo original, puede modificar el comando de movimiento para:
move /y temp.txt "%%~dpa%%~na%%~xa" >nul