Como faço para copiar / renomear em lote / mover vários arquivos aninhados no Windows 7?

1

Eu tenho vários arquivos diferentes com um nome de arquivo idêntico em vários diretórios;

Folder1/file1.tif
Folder2/file1.tif
Folder3/file1.tif

Eu quero que todos os arquivos de nomes idênticos sejam copiados / movidos para um diretório com o nome do diretório anexado ao nome do arquivo ( Folder1_file1.tif , Folder2_file1.tif ...).

Como eu faria essa cópia / renomear / mover no Prompt de Comando / Lote?

    
por Sunil 06.01.2015 / 19:52

1 resposta

1

powershell $d='C:\NewFolder\';md $d;ls -r -fo -fi "*.tif"^|%{(cp -Path ($_.FullName) -Dest ($d+$_.Directory.Name+'_'+$_.Name))}
  • md $ d - cria o diretório 'C: \ NewFolder \'
  • ls -r - obtém todos os arquivos em todos os subdiretórios e diretórios atuais
  • fo = -force - adiciona à lista arquivo de arquivos oculto, de sistema e somente leitura
  • -fi = -filter "* .tif" - selecione o tipo de arquivo tif
  • ^ | - ^ - símbolo de transportador / pipe de máscara em cmd , | - pipe ls object para copy command
  • % ~ foreach ~ ForEach-Object - todo o ciclo de itens
  • cp = copy = Copy-Item - copia o objeto em powershell
  • $_ - variável para o objeto atual na linha de tubulação; amostra:

    powershell 'a','B','c','d','F' ^|%{if($_.toLower() -gt 'b'){write $_}}
    
  • -Path - origem no comando cp / copy / Copy-Item
  • -Dest = -Destino
  • $_.FullName - um nome de caminho completo - arquivo de origem
  • $_.Directory.Name - apenas para um nome de diretório pai
  • $_.Name - para um nome de arquivo somente
  • ($d+$_.Directory.Name+'_'+$_.Name) - caminho de destino e nome do arquivo

    
por 06.01.2015 / 21:45

Tags