Como excluo uma parte de um nome de arquivo para um lote de arquivos no Windows 8.1?

0

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!

    
por trashfight 21.07.2015 / 03:06

3 respostas

0

Se você não se sentir à vontade com o PowerShell, talvez queira dar uma olhada em utilitários gratuitos como: link

    
por 21.07.2015 / 03:19
0

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.

    
por 21.07.2015 / 03:34
0
powershell    
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}

O powershell deve ser preferível em um Win8.

    
por 21.07.2015 / 09:33