Renomeando várias pastas. Recorte para os primeiros caracteres x

2

Exemplo simples: (meu problema envolve milhares de pastas)

Eu tenho duas pastas com os nomes:

"A0000001_words_letters"

"A0000002_lots_of_numbers"

Como eu automaticamente podaria todos os nomes das pastas para apenas conter o início AXXXXXXX? Esse começo será sempre o mesmo número de caracteres, mantendo apenas os primeiros x caracteres do nome.

Obrigado

    
por Tim 21.04.2017 / 16:44

2 respostas

0

Você pode usar um loop FOR / F para definir delimitadores e tokens que analisam as partes do nome da pasta e usá-las para definir variáveis para uso posterior com o comando REN .

Você também deseja utilizar o SetLocal EnableDelayedExpansion para manipular a expansão das variáveis configuradas no loop de forma adequada usado (não analisado em tempo de execução) com o comando renomear por iteração dentro do loop.

@ECHO

SET srcdir=C:\folder\path
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "TOKENS=*" %%F IN ('DIR /B /AD "%srcdir%\*"') DO (
    SET fname=%%~F
    SET fname=!fname:~0,8!
    SET fname=!fname!
    REN "%srcdir%\%%~XNF" "!fname!"
)
EXIT

Mais recursos

por 21.04.2017 / 17:41
0

Se houver sempre um _ após os primeiros caracteres x, o seguinte funcionará a partir da linha de comando (nenhum lote é necessário)

for /d %A in (*) do @for /f "delims=_ eol=_" %B in ("%A") do ren "%A" "%B"

Duplique as porcentagens se você colocar o comando acima em um script em lote.

Se você não pode confiar em _ após os primeiros caracteres x, então este comando deve funcionar a partir da linha de comando, preservando os 8 primeiros caracteres:

for /d %A in (*) do @set "folder=%A"&call ren "%^folder%" "%^folder:~0,8%"

Ou você pode usar esse script em lote para preservar os primeiros 8 caracteres:

@echo off
setlocal disableDelayedExpansion
for /d %%A in (*) do (
  set "folder=%%A"
  setlocal enableDelayedExpansion
  ren "!folder!" "!folder:~0,8!"
  endlocal
)

Ou você pode usar meu utilitário de renomeação de expressão regular JREN.BAT . É um script puro (lote híbrido / JScript) que é executado nativamente em qualquer máquina Windows do XP em diante - não é necessário nenhum arquivo exe de terceiros.

Remover tudo desde o primeiro _ em diante

jren "_.*" "" /d

Preserve os primeiros 8 caracteres

jren "^(.{8}).*" "$1" /d

Nota: Se você estivesse tentando renomear arquivos em vez de pastas, poderia fazer algo como

ren *.txt ????????.txt

Mas, infelizmente, você não pode usar curingas ao renomear pastas. Portanto, essa técnica é inútil para pastas. Veja Como o comando Windows RENAME interpreta curingas? para mais informações.

    
por 21.04.2017 / 17:53