Saya ingin membuat batch sementara yang menemukan baris tertentu dalam file batch dan dapat mengedit baris ini.
Contoh:
//TXT FILE//
ex1
ex2
ex3
ex4
saya ingin membiarkan file batch menemukan 'ex3' dan mengedit ini menjadi 'ex5' agar terlihat seperti ini:
ex1
ex2
ex5
ex4
Pada instalasi Windows asli, Anda dapat menggunakan batch (cmd.exe) atau vbscript tanpa perlu mendapatkan alat eksternal. Berikut'contoh dalam 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
Simpan sebagai myreplace.vbs dan pada baris perintah:
c:\test> cscript /nologo myreplace.vbs > newfile
c:\test> ren newfile file.txt
Tidak ada fungsi pencarian dan penggantian atau pengeditan stream pada baris perintah di XP atau 2k3 (tidak tahu tentang vista atau lebih). Jadi, Anda harus menggunakan skrip seperti yang diposting Ghostdog, atau alat yang mampu mencari dan mengganti seperti sed.
Ada lebih dari satu cara untuk melakukannya, seperti yang ditunjukkan oleh skrip ini:
@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
Ini adalah jenis hal yang dibuat untuk sed
(tentu saja, Anda memerlukan sed pada sistem Anda untuk itu).
sed 's/ex3/ex5/g' input.txt > output.txt
Anda akan membutuhkan sistem Unix atau platform semacam Windows Cygwin untuk ini.
Ada juga GnuWin32 untuk sed. (Instalasi dan penggunaan GnuWin32).