기타
[기타] 특정 경로에 있는 모든 파일(XML)의 내용 변경하는 방법 (feat. PowerShell)
모찌바라기
2023. 8. 1. 12:15
728x90
반응형
Windows환경에서 PowerShell을 이용하면 특정 경로에 있는 특정파일의 모든 내용을 변경할 수 있다.
( geoserver의 datastore id값을 변경할 일이 있어서 씀.. 직접 변경하려면 공수가 너무 들어서... )
샘플코드
# 수정할 디렉터리 경로
$directoryPath = "C:\Path\To\Your\Directory"
# 수정할 문자열
$oldString = "old_string"
$newString = "new_string"
# 디렉터리 내의 모든 XML 파일 가져오기
$xmlFiles = Get-ChildItem -Path $directoryPath -Filter "*.xml" -Recurse
# 각 XML 파일을 열고 내용 수정하기
foreach ($xmlFile in $xmlFiles) {
# 파일 내용을 읽어옴
$content = Get-Content $xmlFile.FullName
# oldString을 newString으로 대체
$modifiedContent = $content -replace $oldString, $newString
# 수정된 내용을 파일에 쓰기
$modifiedContent | Set-Content $xmlFile.FullName
}
위 코드를 보면 딱 4개만 보면 된다.
1. $directoryPath : 수정할 디렉터리 경로 => 해당 경로에 있는 모든 특정파일의 문자열을 수정한다.
2. $oldString : 기존 문자열
3. $newString : 새로운 문자열
4. $xmlFiles : 디렉터리 내의 특정 파일을 가져옴 ( *.xml, *.txt ... 와 같이 확장자를 설정해주어야 함)
실제 사용화면
위 이미지를 보면 ( geoserver 기준으로 설명함 )
D:\****\geoserver-2.17.1-bin\data_dir\workspaces\****\dkacbpr 디렉터리에 있는
<id>DataStoreInfoImpl--6e5e9cb5:1748f58ebc7:-697c</id> 라는 문자열을 가진 모든 xml파일의 문자열을
<id>DataStoreInfoImpl--7104f201:1888a30b221:2427</id> 로 변경해준다.
이렇게 하면 직접 하나하나 변경해주지 않아도 된다.
728x90
반응형