Quiero crear un lote mientras que encuentra líneas específicas en un archivo por lotes y son capaces de editar estas líneas.
Ejemplo:
//ARCHIVO DE TEXTO//
ex1
ex2
ex3
ex4
quiero dejar que el archivo por lotes encontrar 'ex3' y editar esto a 'ex5' para que se vea así:
ex1
ex2
ex5
ex4
En una instalación nativa de Windows, puede utilizar batch(cmd.exe) o vbscript sin necesidad de obtener herramientas externas. Aquí'hay un ejemplo en vbscript:
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If InStr(strLine,"ex3")> 0 Then
strLine = Replace(strLine,"ex3","ex5")
End If
WScript.Echo strLine
Loop
Guardar como mireemplazar.vbs y en la línea de comandos:
c:\test> cscript /nologo myreplace.vbs > newfile
c:\test> ren newfile file.txt
No hay función de búsqueda y reemplazo o edición de secuencias en la línea de comandos en XP o 2k3 (no sé acerca de Vista o más allá). Así, you'll necesidad de utilizar una secuencia de comandos como el Ghostdog publicado, o una herramienta de búsqueda y reemplazo capaz como sed.
Hay más de una manera de hacerlo, como muestra este script:
@echo off
SETLOCAL=ENABLEDELAYEDEXPANSION
rename text.file text.tmp
for /f %%a in (text.tmp) do (
set foo=%%a
if !foo!==ex3 set foo=ex5
echo !foo! >> text.file)
del text.tmp
Este es el tipo de cosas para las que se hizo sed
(por supuesto, necesitas sed en tu sistema para ello).
sed 's/ex3/ex5/g' input.txt > output.txt
Necesitarás un sistema Unix o una plataforma tipo Windows Cygwin para esto.
También existe GnuWin32 para sed. (Instalación y uso de GnuWin32).