2011-08-30 53 views
0

我想,沒有多少運氣,創建一個bat或cmd文件,它會改變我的第三方dll的「腐敗」提示路徑,以便它反駁我的固定dll路徑(P驅動器)。腳本必須: 1)遍歷我的主項目文件夾下的所有文件夾,找到所有以.csproj結尾的文件,結果爲 2)遍歷每個文件並替換「< HintPath> c:\ xx \ yy \ q .DLL </HintPath>」爲 「< HintPath>,P:\ q.dll </HintPath>」Cmd腳本來設置.net項目中的提示路徑

感謝,

問候, styrmir

回答

2

如果可能的話,我會強烈建議使用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>' 
+0

t hanks的答覆。我將嘗試使用PowerShell。只是出於好奇,你知道我會如何改變建議的腳本,以便\ xx \ yy是不同長度的通配符 - 即一些路徑可能是c:\ xx \ yy \ q.dll,而另一些可能是c:\ zz \ RR \毫米\ DD \ o.dll? – styrmiro

+0

不客氣,我已更新我的回覆以符合您的新答案。 –