가능한 경우를, 내가보기 엔 사용 제안 PowerShell이 작업을 수행 할 수 있습니다.
Get-ChildItem -Recurse -Filter *.csproj -Path YOUR_TARGET_ROOT_DIRECTORY_HERE |
ForEach-Object {
(Get-Content $_.FullName) |
ForEach-Object {
$_.Replace('<HintPath>c:\xx\yy\q.dll</HintPath>', '<HintPath>P:\q.dll</HintPath>')
} |
Set-Content $_.FullName -WhatIf
}
참고 : 여기가 후 무엇을 할 걸릴 것입니다 나는이 변화를 확인하기 위해 스크립트를 방지 전환 -whatIf 포함하고 그냥 콘솔에 수행 할 작업을 출력 창문. 스크립트를 작동 시키려면 제거하십시오.
UPDATE 것은
C에서 q.dll
에 가능한 모든 HintPath 참조 교체하려면이 하나
$_.Replace('<HintPath>c:\xx\yy\q.dll</HintPath>', '<HintPath>P:\q.dll</HintPath>')
:, 가능한 모든 디렉토리 깊이를,이 라인을 대체 할 수 있습니다 :
$_ -replace '\<HintPath\>C:\\.*\\q.dll\</HintPath\>', '<HintPath>P:\q.dll</HintPath>'
t 대답에 대한 행크스. 나는 powershell을 사용하여 이것을 시도 할 것이다. 호기심에서 벗어나 \ xx \ yy가 다른 길이의 와일드 카드가되도록 제안 된 스크립트를 변경하는 방법을 알고 있습니까? 즉, 일부 경로는 c : \ xx \ yy \ q.dll 일 수 있고 다른 경로는 c : \ zz 일 수 있습니다 \ rr \ mm \ dd \ o.dll? – styrmiro
안녕하십니까. 새로운 답변과 일치하도록 답장을 업데이트했습니다. –