Se você não se sentir à vontade com o PowerShell, talvez queira dar uma olhada em utilitários gratuitos como: link
Eu tenho muitos arquivos em uma pasta, mas todos eles começam com uma linha de números e são separados do nome real do arquivo por um "_"
Por exemplo:
123123123_filename.txt
456456456_filename2.txt
789789789_filename3.txt
Eu imagino que você pode executar algum tipo de comando para que ele remova os caracteres antes do "_" e do "_".
Qualquer ajuda é muito apreciada!
Se você não se sentir à vontade com o PowerShell, talvez queira dar uma olhada em utilitários gratuitos como: link
Se você quiser apenas remover os caracteres de uma listagem, poderá colocar o seguinte em um arquivo de lote substituindo o diretório relevante no lugar de dirname
for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G
O dir /b
produz uma listagem de diretórios de formato simples (sem informações de cabeçalho ou resumo). O delims=_
indica que o sublinhado deve ser usado como o delimitador e o tokens=2
indica que você deseja o que está após o sublinhado. Consulte FOR / F para obter uma explicação mais completa de como usar FOR /F
em um arquivo em lotes.
Mas se você quiser renomear os arquivos sem os números e sublinhados, no seu exemplo você tem dois arquivos que renderiam o nome filename2.txt
se os números e sublinhados fossem removidos. O que você quer fazer nesse caso? Ou você pretendia usar filename3.txt para o terceiro arquivo?
Se o que segue o sublinhado for um nome exclusivo, você poderá usar o seguindo para renomear os arquivos, substituindo o diretório apropriado por relevantdir :
set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H
No caso acima, o primeiro token, %%G
, é o que está antes do sublinhado e do segundo token, %%H
é o que está após o sublinhado. Eu os reuni novamente para a operação de renomeação e os precedi com o diretório, já que o comando rename usa a sintaxe RENAME [drive:][path]filename1 filename2
.
Coloque um @echo off
como a primeira linha no arquivo em lote antes do comando set
, se você não quiser ver cada operação de renomeação à medida que ela ocorre.
powershell
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}
O powershell deve ser preferível em um Win8.