Como faço para copiar arquivos usando o Windows Batch?
-
06-07-2019 - |
Pergunta
Eu tenho um diretório com vários subdiretórios com arquivos.
Como posso copiar todos os arquivos nos subdiretórios para um novo local?
Editar: eu não quero copiar os diretórios, apenas os arquivos ...
Como este ainda está no XP, eu escolhi o abaixo solução:
for /D %S IN ("src\*.*") DO @COPY "%S\" "dest\"
Obrigado!
Solução
Ok. Com sua edição que diz que você não quer que a estrutura de diretórios, eu acho que você vai querer usar algo como isto:
for /F "usebackq" %s IN (`DIR /B /S /A-D SrcDir`) DO @(
XCOPY %s DestDir\%~nxs
)
Outras dicas
O comando Xcopy deve ajudar aqui.
XCOPY /E SrcDir\*.* DestDir\
Ou se você não quer qualquer um dos arquivos em SRCDIR, apenas os sub-diretórios, você pode usar XCOPY em conjunto com o comando para:
FOR /D %s IN (SrcDir\*) DO @XCOPY /E %s DestDir\%~ns\
robocopy "c:\source" "c:\destination" /E
Se eu entendi bem você tem uma árvore de diretórios grande e você quer todos os arquivos dentro dele para ser em um diretório. Se isso é correto, então eu posso fazê-lo em duas linhas:
dir /s /b "yourSourceDirectoryTreeHere" > filelist.txt
for /f %f in (filelist.txt) do @copy %f "yourDestinationDirHere"
Em um arquivo de lote vs. a mudança de linha de comando% f para %% f
Se você quiser manter a mesma estrutura de pastas na outra extremidade, sons tão simples como XCOPY
xcopy c: \ old \ * * d:. \ Nova \ / s
Use / e em vez de / s se você quiser diretórios vazios copiados também.
for /D %S IN ("src\*.*") DO @COPY "%S\" "dest\"