Ich möchte einen Stapel erstellen, der bestimmte Zeilen in einer Stapeldatei findet und diese Zeilen bearbeiten kann.
Beispiel:
//TXT DATEI//
ex1
ex2
ex3
ex4
Ich möchte, dass die Stapeldatei 'ex3' findet und dies in 'ex5' umwandelt, so dass es wie folgt aussieht:
ex1
ex2
ex5
ex4
Bei einer nativen Windows-Installation können Sie entweder Batch (cmd.exe) oder vbscript verwenden, ohne dass Sie externe Tools benötigen. Hier ist ein Beispiel in 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
Speichern Sie als myreplace.vbs und geben Sie in die Befehlszeile ein:
c:\test> cscript /nologo myreplace.vbs > newfile
c:\test> ren newfile file.txt
Es gibt keine Such- und Ersetzungsfunktion oder Stream-Editierung in der Befehlszeile in XP oder 2k3 (ich weiß nicht, wie es mit Vista oder darüber hinaus aussieht). Sie müssen also ein Skript wie das von Ghostdog gepostete oder ein such- und ersetzbares Tool wie sed verwenden.
Wie dieses Skript zeigt, gibt es mehr als einen Weg, dies zu tun:
@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
Das ist die Art von Dingen, für die sed
gemacht wurde (natürlich brauchen Sie dafür sed auf Ihrem System).
sed 's/ex3/ex5/g' eingabe.txt > ausgabe.txt
Sie benötigen dafür entweder ein Unix-System oder eine Windows Cygwin-Plattform.
Es gibt auch GnuWin32 für sed. (GnuWin32 Installation und Verwendung).