
Precisa encontrar o último sublinhado em um nome de arquivo e remover tudo o que vem depois dele (incluindo o último sublinhado).
por exemplo, nome do arquivo:
abc_erf_dsgd_fd12458.txt
resultado esperado:
abc_erf_dsgd.txt
Nota: O no:of sublinhados que aparece no nome do arquivo é dinâmico e não é de natureza fixa.
Certos arquivos podem ter apenas 2 sublinhados, enquanto outros podem ter até 6.
A intenção aqui é descobrir o último sublinhado e omitir tudo o que vem depois dele.
De preferência, script em lote do Windows, que pode resolver o problema, e não comandos do PowerShell.
Responder1
@Echo off
set file=abc_erf_dsgd_fd12458.txt
for %%A in (%file%) do set Ext=%%~xA
set remove=%file%
:loop
if "%remove%" neq "%remove:*_=%" Set "remove=%remove:*_=%"&goto :loop
call set filenew=%%file:_%remove%=%%%Ext%"
set file
Exemplo de saída:
> SU_1220967.cmd
file=abc_erf_dsgd_fd12458.txt
filenew=abc_erf_dsgd.txt"
O lote
- primeiro coloca a extensão em var
Ext
- em seguida, cria um var
remove
contendo o restante do nome do arquivo após remover todo o texto até e incluindo o sublinhado em um loop usando a substituição de string. - constrói o novo nome do arquivo substituindo o
remove
por nada e reaplicando a extensão