Movendo arquivos em subpastas para pastas principais em muitas pastas

Movendo arquivos em subpastas para pastas principais em muitas pastas

Meu programa de importação de fotos coloca a cópia de backup das fotos em uma pasta chamada "importada em DATA". Essas pastas são criadas como subpastas da pasta de localização desejada. Tenho muitas dessas pastas "importadas" em várias camadas de pastas. Um exemplo seria:

C:\fotos\todas as fotos 2013\01jan13\importadas em 18 de janeiro.

Existe uma maneira de digitalizar a pasta de imagens através de cada uma de suas subpastas e fazer com que o programa mova todos os arquivos de uma pasta "importada em" para a pasta acima dela? Desculpe se isso é confuso!

Obrigado por qualquer ajuda

Responder1

Isso funciona no Windows 7; Não sei sobre outras versões:

for /r C:\pictures %F in (*.*) do move %F %F\..\..

Notas:

  • for /r C:\pictures %F in (*.*) do …executa a seguinte instrução uma vez para cada arquivo em C:\pictures, recursivamente, com %Fdefinido como o nome do arquivo.
  • movemove um arquivo.
  • Aqui fica complicado. Você sabe que isso cd ..leva você a um nível acima. Bem, acontece que você pode dizer \Users\rshonaker\Documents\fubar.doc\.., e ele se referirá a \Users\rshonaker\Documents(o diretório em que o arquivo está), assim %F\..como o diretório em que o arquivo %Festá. E então %F\..\..é o pai desse diretório.

Mais notas:

  • Use com cuidado. Se você tiver algum arquivo em C:\pictures, isso tentará movê-lo para C:\. Se você tiver algum arquivo em C:\pictures\all photos 2013, isso tentará movê-lo para C:\pictures, etc.
  • Se você quiser colocar isso em um script, substitua todas as ocorrências de %Fpor %%F.

informação relacionada