I'm using Powershell on Windows XP and am trying to write a command that will:
1. read all .bat,.cfg, and .config files
2. replace a string (it's actually the path...these files were all moved)
3. overwrite the existing files with the new one (same name, same location, etc.)
I am not a Powershell user, but I have managed to piecemeal the following together:
gci -r -include "*.bat","*.config","*.cfg"
| gc
| foreach { $_ -replace "D:","C:\path" }
| sc ??.FullName
I'm fairly certain that I've taken care of #1 and #2, but am having trouble figuring out #3 (passing the filename to variable that can be referenced in sc). Any thoughts? Also, let me know if you need any additional information.
EDIT:
I managed to work out an answer (see below), but is there a better way to do this?
try:
gci -r -include "*.bat","*.config","*.cfg" |
foreach-object { $a = $_.fullname; ( get-content $a ) |
foreach-object { $_ -replace "D:","C:\path" } |
set-content $a }
If you want to use the above code on ALL FILES use this code, note the top line:
gci -r *.* |
foreach-object { $a = $_.fullname; ( get-content $a ) |
foreach-object { $_ -replace "master81","master" } |
set-content $a }
if you leave out *.*
you may get errors because you are trying to edit folders.
[Get-Content], UnauthorizedAccessException
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With