Eu quero mover todos os arquivos da pasta1 para a pasta2, a menos que haja um conflito de nome de arquivo.
Use o seguinte arquivo em lote (localizado no diretório pai de folder1
e folder2
.
MovesFiles.cmd:
@echo off
setlocal enabledelayedexpansion
for /f %%f in ('dir /b folder1') do (
if not exist folder2\%%~nxf move folder1\%%~nxf folder2
)
endlocal
Notas:
- Todos os arquivos em que há um conflito de nome (ou seja, já existem em
folder2
) são deixados emfolder1
. - Todos os outros arquivos são movidos.
Exemplo de uso:
F:\test>dir /b folder1
1.txt
2.txt
3.txt
4.txt
5.txt
F:\test>dir /b folder2
2.txt
4.txt
F:\test>MoveFiles.cmd
1 file(s) moved.
1 file(s) moved.
1 file(s) moved.
F:\test>dir /b folder1
2.txt
4.txt
F:\test>dir /b folder2
1.txt
2.txt
3.txt
4.txt
5.txt
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- para / f - Comando Loop contra os resultados de outro comando.
- dir - Exibe uma lista de arquivos e subpastas.
- parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.