배치 파일에서 특정 줄을 찾아서 이 줄을 편집할 수 있는 배치 동안을 만들고 싶습니다.
예시:
//TXT 파일//
ex1
ex2
ex3
ex4
배치 파일에서 'ex3'을 찾아서 'ex5'로 편집하여 다음과 같이 보이도록 하고 싶습니다:
ex1
ex2
ex5
ex4
기본 Windows 설치에서는 외부 도구를 구할 필요 없이 batch(cmd.exe) 또는 vbscript를 사용할 수 있습니다. 다음은 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
myreplace.vbs로 저장하고 명령줄에 저장합니다:
c:\test> cscript /nologo myreplace.vbs > newfile
c:\test> ren newfile file.txt
XP 또는 2k3에는 명령줄에서 검색 및 바꾸기 기능이나 스트림 편집 기능이 없습니다(Vista 이상은 잘 모르겠습니다). 따라서 Ghostdog가 게시한 것과 같은 스크립트나 sed와 같은 검색 및 바꾸기 지원 도구를 사용해야 합니다.
이 스크립트에서 볼 수 있듯이 여러 가지 방법이 있습니다:
@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
ghostdog74's 를 들어 제공의 핵심이 무엇이 필요한 때문에,나는've 에 기록되지 않는 모든 vbs 하기 전에 필요하다. It's 완벽하지 않습니다,하지만 나는 손가락에 따라 달라집니다.예로는 풀에서 스크립트의 경우 사람이 그것을 발견 유용합니다.
'ReplaceText.vbs
Option Explicit
Const ForAppending = 8
Const TristateFalse = 0 ' the value for ASCII
Const Overwrite = True
Const WindowsFolder = 0
Const SystemFolder = 1
Const TemporaryFolder = 2
Dim FileSystem
Dim Filename, OldText, NewText
Dim OriginalFile, TempFile, Line
Dim TempFilename
If WScript.Arguments.Count = 3 Then
Filename = WScript.Arguments.Item(0)
OldText = WScript.Arguments.Item(1)
NewText = WScript.Arguments.Item(2)
Else
Wscript.Echo "Usage: ReplaceText.vbs <Filename> <OldText> <NewText>"
Wscript.Quit
End If
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Dim tempFolder: tempFolder = FileSystem.GetSpecialFolder(TemporaryFolder)
TempFilename = FileSystem.GetTempName
If FileSystem.FileExists(TempFilename) Then
FileSystem.DeleteFile TempFilename
End If
Set TempFile = FileSystem.CreateTextFile(TempFilename, Overwrite, TristateFalse)
Set OriginalFile = FileSystem.OpenTextFile(Filename)
Do Until OriginalFile.AtEndOfStream
Line = OriginalFile.ReadLine
If InStr(Line, OldText) > 0 Then
Line = Replace(Line, OldText, NewText)
End If
TempFile.WriteLine(Line)
Loop
OriginalFile.Close
TempFile.Close
FileSystem.DeleteFile Filename
FileSystem.MoveFile TempFilename, Filename
Wscript.Quit
@echo off
set "replace=something"
set "replaced=different"
set "source=Source.txt"
set "target=Target.txt"
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %source%') do (
set "line=%%b"
if defined line set "line=!line:%replace%=%replaced%!"
echo(!line!
)
) > %target%
endlocal
Source. 그것을 희망하는 데 도움이 될 것입니다.
당신은 항상 사용할 수 있"멀"="찾 및 교". It's written 아래 자바다,그래서 그것을 작동하는 Java 일(pretty much everywhere). 작품 디렉토리와 그 하위 디렉터리를 검색하고 대체에서 파일을 수 있습니다 또한,이름을 바꿉니다. 또한 이름을 바꿀 수 있습니다 대량의 파일이 있습니다.면허=무료 모두에 대해 개인 또는 comapnies. 매우 빠르고 유지합니다. 여기에서 찾을 수 있:http://findandreplace.sourceforge.net/
또한 사용할 수 있습 GrepWin. 작품은 거의 동일 합니다. 당신은 여기에서 찾을 수 있습니다:http://tools.tortoisesvn.net/grepWin.html