Estou tentando capturar e limpar a saída do -WhatIf
parâmetro no powershell para uma operação de renomeação de arquivo. O objetivo é remover algumas partes da saída, mas mesmo depois de várias tentativas, não consegui fazer funcionar. Abaixo estão os métodos que tentei:
Set-Location "C:\Path\To\Directory"
$Replace1 = 'Item: C:\Path\To\Directory\'
$Replace2 = 'What if: Performing the operation `"Rename File`" on target'
$Replace3 = 'Destination: C:\Path\To\Directory\'
$VarIvExp = "GCI -Path . -Filter *.pdf | Ren -New { `$_.Name -replace ' ', '_' -replace '-', '_' } -Whatif ;"
# Various attempts to capture and replace parts of the output:
Invoke-Expression $VarIvExp | % { ($_ 3>&1).Replace($Replace1,'').Replace($Replace2,'').Replace($Replace3,'') }
Invoke-Expression $VarIvExp.ToString() | % { ($_ 3>&1).Replace($Replace1,'').Replace($Replace2,'').Replace($Replace3,'') }
Invoke-Expression $VarIvExp 3>&1 | % { $_.ToString().Replace($Replace1,'').Replace($Replace2,'').Replace($Replace3,'') }
Invoke-Expression $VarIvExp.ToString() | % { ($_.ToString() 3>&1).Replace($Replace1,'').Replace($Replace2,'').Replace($Replace3,'') }
Invoke-Expression $VarIvExp.ToString() | % { $_ | out-string -Replace $Replace1,'' -Replace $Replace2,'' -Replace $Replace3,'' }
Invoke-Expression $VarIvExp | % { $_.ToString() | -Replace $Replace1,'' -Replace $Replace2,'' -Replace $Replace3,'' }
Invoke-Expression $VarIvExp 3>&1 | % { $_ | out-string -Replace $Replace1,'' -Replace $Replace2,'' -Replace $Replace3,'' }
Invoke-Expression $VarIvExp.ToString() | % { $_ | -Replace $Replace1,'' -Replace $Replace2,'' -Replace $Replace3,'' }
Invoke-Expression $VarIvExp | % { $_.ToString() | -Replace $Replace1,'' -Replace $Replace2,'' -Replace $Replace3,'' }
- Saídas:
What if: Performing the operation "Rename File" on target "Item: C:\Path\To\Directory\SomeText I nº 001-SMSCBMRJ-20250222.pdf" Destination: C:\Path\To\Directory\SomeText__I_nº_001_SMSCBMRJ_20250222.pdf
What if: Performing the operation "Rename File" on target "Item: C:\Path\To\Directory\SomeText I nº 002-SMSCBMRJ-20250222.pdf" Destination: C:\Path\To\Directory\SomeText__I_nº_002_SMSCBMRJ_20250222.pdf
What if: Performing the operation "Rename File" on target "Item: C:\Path\To\Directory\SomeText II nº 001-SMSCBMRJ-20250222.pdf" Destination: C:\Path\To\Directory\SomeText_II_nº_001_SMSCBMRJ_20250222.pdf
What if: Performing the operation "Rename File" on target "Item: C:\Path\To\Directory\SomeText II nº 002-SMSCBMRJ-20250222.pdf" Destination: C:\Path\To\Directory\SomeText_II_nº_002_SMSCBMRJ_20250222.pdf
Nota .: Também tentei várias manipulações diretamente em $Results
, mas sem sucesso. Abaixo estão as tentativas com $Results
...$Results.Replace('various attempts','')
Set-Location "C:\Path\To\Directory"
$Replace1 = 'Item: C:\Path\To\Directory\'
$Replace2 = 'What if: Performing the operation `"Rename File`" on target'
$Replace3 = 'Destination: C:\Path\To\Directory\'
$VarIvExp = "GCI -Path . -Filter *.pdf | Ren -New { `$_.Name -replace ' ', '_' -replace '-', '_' } -Whatif ;"
$Results = Invoke-Expression $VarIvExp
$Results = Invoke-Expression $VarIvExp.Replace( -Replace $Replace1,'' -Replace $Replace2,'' -Replace $Replace3,'')
$Results.ToString().Replace($Replace1,'').Replace($Replace2,'').Replace($Replace3,'')
- Resultado desejado/esperado:
SomeText I nº 001-SMSCBMRJ-20250222.pdf SomeText__I_nº_001_SMSCBMRJ_20250222.pdf
SomeText I nº 002-SMSCBMRJ-20250222.pdf SomeText__I_nº_002_SMSCBMRJ_20250222.pdf
SomeText II nº 001-SMSCBMRJ-20250222.pdf SomeText_II_nº_001_SMSCBMRJ_20250222.pdf
SomeText II nº 002-SMSCBMRJ-20250222.pdf SomeText_II_nº_002_SMSCBMRJ_20250222.pdf