I\'m trying to recursively rename a bunch of TFS folders using tf rename
, PowerShell and a regular expression but I\'m having some issues with PowerShell as I haven
I would first filter by 5* so you only process names that start with 5. Also, in this case since tf.exe isn't a PowerShell cmdlet, you don't want to use a scriptblock to determine a new name. Just use a grouping expression like so:
dir -filter 5* | foreach { tf rename $_ ($_.Name -replace '^5', '2.3.2')}
BTW, when you are trying to debug parameter passing to a native EXE like this it is immensely helpful to use the echoargs.exe utilty from the PowerShell Community Extensions. This is what it told me about your original approach:
6# dir -filter 5* | foreach { echoargs rename $_ { $_.Name -replace '^5', '2.3.2' } }
Arg 0 is
Arg 1 is <5foo.txt>
Arg 2 is <-encodedCommand>
Arg 3 is
Arg 4 is <-inputFormat>
Arg 5 is
Arg 6 is <-outputFormat>
Arg 7 is