Ir ao conteúdo

Mover arquivos em todas as pastas e subpastas no Prompt de Comando (CMD)


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

Bom dia galera!

 

Normalmente uso o Prompt de Comando para copiar e mover arquivos/pastas em lote dos arquivos de meus clientes. Tenho uma estrutura de pastas no seguinte formato:

  • E:\Cliente\Produto 1\JPEG\Imagem *.jpg
  • E:\Cliente\Produto 2\JPEG\Imagem *.jpg
  • E:\Cliente\Produto 3\JPEG\Imagem *.jpg
  • ......

 

O que eu preciso é mover todas as imagens contidas dentro das pastas JPEG para um diretório acima, ou seja Produto X.

 

Tentei fazer isso usando caractere curinga com o comando move, porém sem sucesso. O comando está da seguinte forma:

move "E:\Cliente\*\JPEG\Imagem *.jpg" "E:\Cliente\*\JPEG\.."

Está dando erro de sintaxe. Imagino que dê para fazer isso usando um loop de repetição, mas não sei como fazer isso no prompt. Alguém que saiba pode me ajudar por gentileza?

 

P.S.: As pastas "Produto X" não tem nenhum prefixo ou sufixo, são combinações de números e letras variáveis, conforme o modelo de cada produto.

 

Obrigado. 😄

Postado

Você quer mover todas as fotos no formato JPG de dentro da pasta "JPEG" para a pasta pai "Produtos" correto?

 

Ficaria algo assim:

 

For /d %A in (E:\Cliente\*) do Move "E:\Cliente\%A\JPEG\*.jpg" ..\

 

*Mais é melhor testar num ambiente de teste antes de executar...

  • Solução
Postado

Consegui resolver ontem pela tarde da seguinte forma:

/* SALVAR CAMINHO DOS ARQUIVOS JPG */
SET FolderJPG=E:\Cliente\Produtos\@HD\*.jpg
dir "%FolderJPG%" /A-D /S /B > localJPGFiles.txt


/* MOVER ARQUIVOS JPG PARA UMA PASTA ACIMA E REMOVER PASTAS EM BRANCO */
for /F "usebackq tokens=*" %i in (localJPGFiles.txt) do move "%i" "E:%~pi.." & rd "E:%~pi"

/* DELETAR ARQUIVO localJPGFiles.txt CRIADO */
del localJPGFiles.txt

Na primeira parte crio uma variável pra setar qual está a pasta que quero mover os arquivos e quais tipos de arquivo selecionar. Tudo será salvo em um arquivo .txt um caminho de arquivo por linha, no local de onde o CMD foi aberto.

 

Depois para mover uso o for pra percorrer todas as linhas do arquivo .txt um por vez e então ele pega o local de onde está o arquivo com %~pi e move uma pasta acima. Depois uso rd "E:%~pi" pra apagar a pasta que irá estar em branco, já que no meu caso os únicos arquivos que estarão na pasta que movi  as imagens são elas mesmas, deixando então a pasta em branco.

 

E por último, deleto o arquivo .txt criado por se tornar desnecessário após todo o processo.

  • 4 anos depois...
Postado

Boa tarde gente, beleza? Fiz esses comandos e testei no prompt de comando adm. Um por um dá tudo certo. Porém, quando eu crio um .BAT e abro como adm não funciona a linha do FOR.

 

cd\
dir /ad/b i:\rock >i:\Move.dat
for /f "usebackq tokens=*" %i in (i:\Move.dat) do move "i:\rock\%i" i:\teste
del Move.dat

 

Já quebrei cabeça, alguém pode me ajudar? Muito obrigado!!!

 

Ps: No exemplo tenho uma pasta ROCK com várias subpastas dentro. Quero MOVER todas subpastas de lá para a pasta teste.

Postado
Em 27/07/2023 às 17:00, ricardo_br disse:

Dentro do bat é preciso substituir o porcentagem (%) por 2 porcentagem (%%) ficando:

 

for /f "usebackq tokens=*" %%i in (i:\Move.dat) do move "i:\rock\%%i" i:\teste

 

Perfeito! Muito Obrigado!

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!