Minha tarefa é substituir alguns caracteres nos nomes dos arquivos em cerca de 10.000 arquivos que possuo, incluindo subpastas.
Então, no meu exemplo, quero alterar o caractere # para hash.
A localização do meu arquivo é "C:\Users\JHB Laptop\Documents" com o arquivo principal chamado test "C:\Users\JHB Laptop\Documents\test".
As subpastas são "C:\Users\JHB Laptop\Documents\test\Nova pasta1\Nova pasta2\Nova pasta3\Nova pasta4\Nova pasta5"
Adaptei este código do usuário:331812 Malcolm
{cd "C:\Users\MyName\Documents\MyDirectory"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "_"," " }}
e esta é a minha alteração:
cd "C:\Users\JHB Laptop\Documents\test"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "#","(hash)" }
Esta parte funciona bem, mas é claro que para na última pasta da string
E é aqui que meu conhecimento para. Vejo que -recurse desempenha um papel nas subpastas, mas não consigo descobrir onde ele se encaixa no projeto.
Tentar:
dir -Recurse | Rename-Item –NewName { $_.name –replace "#","(hash)" }
dir
é o antigo método de prompt de comando. Isso tecnicamente apenas funcionaGet-ChildItem
, assim comols
. Eles são chamados de aliases (Get-Alias
). Usehelp dir
para obter ajuda com um comando, explica-Recurse
. Eu gosto de fazerhelp dir -sh
o que abrirá a ajuda em uma janela separada com pesquisa para que você possa consultá-la.-sh
é a abreviação de-ShowWindow
, já que não há outros parâmetros/opções começando comsh
powershell, pressupõe que você quis dizerShowWindow