기타

[기타] 특정 경로에 있는 모든 파일(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
반응형