如果可能的話,我會強烈建議使用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
要更換每一個可能的HintPath參考q.dll
℃以內:,在每一個可能的目錄深度,則可以替換該行:
$_.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 hanks的答覆。我將嘗試使用PowerShell。只是出於好奇,你知道我會如何改變建議的腳本,以便\ xx \ yy是不同長度的通配符 - 即一些路徑可能是c:\ xx \ yy \ q.dll,而另一些可能是c:\ zz \ RR \毫米\ DD \ o.dll? – styrmiro
不客氣,我已更新我的回覆以符合您的新答案。 –