2017-04-06 8 views
0

안녕하십니까, 승 8.1에서 특정 디렉토리에Win 8.1 디렉토리에있는 텍스트 파일을 대량 편집하는 방법은 무엇입니까?

을 입력하면 웹 사이트를 대표하는 * .xml 확장자를 가진 수백 개의 텍스트 파일을 갖게됩니다.

각 파일마다 알려진 내용이있는 특정 태그 (예 : <tag>old</tag>)가 정확히 하나씩 있습니다.

이 모든 페이지에서이 텍스트는 <tag>new</tag>으로 바꿔야합니다. 서브 디렉토리는 존재하지만 조사 할 필요는 없습니다.

이 작업을 어떻게 자동화합니까? (필자는 PowerShell에 익숙하지 않은데 사용 해 본 적이 없다고 생각하지만 올바른 방향으로 나아갈 것입니까? 오해의 소지가있는 태그에 사과드립니다.)

미리 감사드립니다! replacer.bat

for %%# in (*.xml) do (
    call replacer.bat "%%~f#" "<tag>old</tag>" "<tag>new</tag>" 
) 
+0

PowerShell은 많은 어려움없이,이 작업을 수행하는 데 사용할 수 있습니다,하지만 난 윈도우에서 사용할 수있는 * IX 유틸리티의 구현'sed'이 있다는 것을 매우 확신하고 나는 속속들이 잘 알고 모르겠지만 * ix shell, 나는 이것이'sed'에서 사소한 것이라고 확신합니다. –

+0

필자는 그 문법을 살펴 보았습니다. 그렇습니다. 꽤 ixish입니다.) 결국, JoeH의 답변을 보았습니다. 왜냐하면 단순히 내장 된 방법으로 할 수 있기 때문입니다. 어쨌든 고맙습니다, 제프! – Herb

답변

1

+0

. 매력처럼 작동하고 꽤 연기됩니다. 좋은 평판을 얻었습니다. 환영합니다. – Herb

+0

사실. 꽤 우아하고 PowerShell을 사용하여 작업 할 때 내 선입관 중 일부가 잘못되었다는 사실을 다시 한 번 상기시켜줍니다 (내 순수 PS 솔루션은 소스 파일을 덮어 쓰는 것을 피하기 위해 일부 처리 방법을 사용했을 것입니다.). –

+1

부수적으로, 루프 헤더를'foreach ($ Get-ChildItem C : \ Folder * .xml -rec) '로 간단히 작성하여'$ myFiles'를 사용하지 않아도된다. –

0

확인이 PowerShell 스크립트를 사용해보십시오.

$myFiles=get-childitem C:\Folder *.xml -rec 
foreach ($file in $myFiles) 
{ 
    (Get-Content $file.PSPath) | 
    Foreach-Object {$_ -replace "<tag>old</tag>", "<tag>new</tag>"} | 
    Set-Content $file.PSPath 
}