मैं खुद के लिए इस की जरूरत है और स्क्रिप्ट के नीचे थोड़ा बेहतर संस्करण।
मैं निम्नलिखित कहा: वर्बोज़ पैरामीटर के लिए
- समर्थन ताकि आप वास्तव में देख सकते हैं कि स्क्रिप्ट में परिवर्तन कर दिया है।
- फ़ोल्डर निर्दिष्ट करने की क्षमता ताकि आप परिवर्तनों को सीमित कर सकें।
- एक्सटेंशन शामिल करने के लिए bower.json, txt और md जोड़ना।
- पहले सामग्री को खोजें और बदलें, बाद में नाम बदलें।
- यदि खोज स्ट्रिंग नहीं मिलती है तो सामग्री को प्रतिस्थापित न करें (इससे संशोधित दिनांक में अनावश्यक परिवर्तन से बचा जाता है)।
[CmdletBinding(SupportsShouldProcess=$true)]
Param()
$match = "MyProject"
$replacement = Read-Host "Please enter project name"
$searchFolders = @("MyProject.JS", "MyProject.WebApi", ".")
$extensions = @("*.cs", "*.csproj", "*.sln", "bower.json", "*.txt", "*.md")
foreach($searchFolderRelative in $searchFolders)
{
$searchFolder = join-path (get-location) $searchFolderRelative
Write-Verbose "Folder: $searchFolder"
$recurse = $searchFolderRelative -ne "."
if (test-path $searchFolder)
{
$files = Get-ChildItem (join-path $searchFolder "*") -file -include $extensions -Recurse:$recurse |
Where-Object {Select-String -Path $_.FullName $match -SimpleMatch -Quiet}
foreach($file in $files)
{
Write-Verbose "Replaced $match in $file"
((Get-Content $file.fullname) -creplace $match, $replacement) | set-content $file.fullname
}
$files = Get-ChildItem $searchFolder -filter *$match* -Recurse:$recurse
$files |
Sort-Object -Descending -Property { $_.FullName } |
% {
Write-Verbose "Renamed $_"
$newName = $_.name -replace $match, $replacement
Rename-Item $_.FullName -newname $newName -force
}
}
else
{
Write-Warning "Path not found: $searchFolder"
}
}
ध्यान दें कि इस सवाल का जवाब से एक परिवर्तन यह है कि इसके बाद के संस्करण केवल निर्दिष्ट फ़ोल्डर में फ़ोल्डर recurses, जड़ में नहीं है। यदि आप इसे नहीं चाहते हैं तो बस $recurse = true
सेट करें।
तो आप चाहते हैं एक आदेश/समारोह है कि उन मामलों में से प्रत्येक में फ़ाइल की सामग्री, फ़ाइल नाम, और फ़ोल्डर नाम में बी के साथ एक बदलने के लिए या ए और बी अलग कर रहे हैं होगा? –
"एक कमांड/फ़ंक्शन जो फ़ाइल सामग्री, फ़ाइल नाम और फ़ोल्डर नामों में ए के साथ बी को प्रतिस्थापित करेगा" मामला है। –