Script para prefixar o nome do arquivo com a pasta

2

Estou tentando encontrar um script que funcione no Windows e prefixe todos os arquivos em uma pasta com o nome da pasta que o contém.

Por exemplo, na pasta C:\FolderName1 , existem 3 arquivos:

hello.jpg
test.txt
monday.docx

Após o script ter sido executado para os arquivos acima, os nomes serão os seguintes:

FolderName1 - hello.jpg
FolderName1 - test.txt
FolderName1 - monday.docx

Eu não me importo com a linguagem de script, mas não consegui encontrar uma solução em nenhum lugar.

Obrigado antecipadamente.

    
por Sam 26.11.2012 / 12:34

2 respostas

2

Quantas pastas existem? Se apenas um, você pode renomear todos os arquivos com um único for loop:

  1. Crie C:\FolderName1_out pasta
  2. Abrir o prompt do CMD
  3. for %I in (C:\FolderName1\*) do echo rename "C:\FolderName1\%~nxI" "C:\FolderName1_out\FolderName1 - %~nxI"
  4. Se renomear o plano parecer correto, remova echo do comando acima e execute novamente

Se houver muitas pastas, você poderá criar um arquivo de lote (substitua todo% por %% e NomeDaPasta1 por% 1) e execute-o várias vezes, passando o nome da pasta como argumento. Você pode até executar esse arquivo em lote no loop for:

for /D %J in (*) do echo call my_batch.cmd %~nxJ

Se a saída parece correta, remova echo e execute novamente.

    
por 26.11.2012 / 13:56
0

Usando o PowerShell. Se você precisar alterar nomes de arquivos somente em uma pasta, use:

gci c:\PathToFolder | Where {$_.psIsContainer -eq $false} | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

Ele altera todos os arquivos nessa pasta (mas exclui as pastas da renomeação) para formatar PathToFolder - Nome do arquivo

Você pode adicionar -Recurse se tiver pastas aninhadas:

gci c:\PathToParentFolder -Recurse | Where {$_.psIsContainer -eq $false} | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

Certifique-se de executar primeiro uma pasta de teste ou apenas adicionar -WhatIf ao final do comando para ver os possíveis resultados sem realmente destruir seus dados:)

    
por 26.11.2012 / 15:00