it-swarm-pt.tech

lote/morcego para copiar pasta e conteúdo de uma só vez

Estou escrevendo um script em lote que faz uma cópia. Eu quero script para copiar uma pasta inteira. Quando eu quero copiar um único arquivo, eu faço isso 

copy %~dp0file.txt file.txt 

Se eu tiver uma pasta com essa estrutura, existe um comando para copiar toda essa pasta com o conteúdo de uma só vez, preservando a estrutura exata.

mainfolder/
  file1.txt
  file2.txt
  insidefolder/
     file3.txt
     file4.txt 
     file5.txt
28
zmol

se você tiver xcopy, você pode usar o parâmetro /E, que copiará diretórios e subdiretórios e os arquivos dentro deles, incluindo a manutenção da estrutura de diretórios para diretórios vazios

xcopy [source] [destination] /E
46
akf

O jeito antigo:

xcopy [source] [destination] /E

xcopy é depreciado. Robocopy substitui Xcopy. Ele vem com o Windows 8, 8.1 e 10.

robocopy [source] [destination] /E

robocopy tem várias vantagens:

  • caminhos de cópia que excedam 259 caracteres
  • cópia multithread

Mais detalhes aqui .

7
Vertexwahn

Eu suspeito que o comando xcopy é a bala mágica que você está procurando.

Ele pode copiar arquivos, diretórios e até unidades inteiras, preservando a hierarquia de diretórios original. Há também um punhado de opções adicionais disponíveis, comparado ao comando básico copy.

Confira a documentação aqui

Se o arquivo de lote precisar ser executado apenas no Windows Vista ou posterior, você poderá usar robocopy , que é uma ferramenta ainda mais poderosa que xcopy e agora está incorporada ao sistema operacional. Sua documentação está disponível aqui .

5
Cody Gray

Eu me interessei pela pergunta original aqui e outras relacionadas.

Para uma resposta, esta semana fiz algumas experiências com o XCOPY.

Para ajudar a responder a pergunta original, aqui Eu postei os resultados das minhas experiências.

Eu fiz os experimentos no Windows 7 64 bit Professional SP1 com a cópia do XCOPY Que veio com o sistema operacional.

Para os experimentos, eu escrevi um código em A linguagem de script Open Object Rexx E a macro de edição do editor Kexx com O editor de texto KEdit.

XCOPY foi chamado a partir do código Rexx. O código Kexx Editou a saída de tela de XCOPY para focar nos resultados cruciais.

Todos os experimentos tinham a ver com o uso do XCOPY para copiar um diretório com vários arquivos e subdiretórios .

Os experimentos consistiram em 10 casos. Cada caso ajustou os argumentos para XCOPY E chamou XCOPY uma vez. Todos os 10 casos foram Tentando fazer a mesma operação de cópia .

Aqui estão os principais resultados:

(1) Dos 10 casos, apenas três fizeram Cópia. Os outros 7 casos imediatamente, Apenas do processamento dos argumentos para XCOPY, deram mensagens de erro, por exemplo,

Invalid path

Access denied

sem arquivos copiados.

Dos três casos que copiaram, eles Fizeram a mesma cópia, ou seja, deram Os mesmos resultados.

(2) Se quiser copiar um diretório X e todos os arquivos E diretórios no diretório X, Na árvore hierárquica do sistema de arquivos Com raiz no diretório X, então aparentemente XCOPY - e isso parece ser muito da Pergunta original - simplesmente NÃO fará Isso.

Uma conseqüência é que, ao usar o XCOPY para Copiar o diretório X e seu conteúdo, então PODE copiar o conteúdo, mas NÃO PODE copiar o diretório X ; assim, perca o carimbo de data/hora no diretório X, seu bit de arquivo , dados sobre propriedade, atributos , etc.

É claro que se o diretório X for um subdiretório Do diretório Y, um XCOPY de Y copiará Todo o conteúdo do diretório Y WITH Diretório X. Assim, dessa maneira uma cópia do diretório X. No entanto, a cópia do diretório X terá seu carimbo de data/hora da hora da execução de XCOPY e NÃO o carimbo da data e hora do diretório original X.

Essa alteração nos carimbos de data e hora pode ser Inadequada para uma cópia de um diretório com um Lote de páginas da Web baixadas: O arquivo HTML Da página da Web terá suas carimbo de data e hora original, mas o subdiretório correspondente para arquivos usados ​​ pelo arquivo HTML terá o carimbo de data/hora da execução de XCOPY. Portanto, quando Classificar a cópia em carimbos de data e hora, todos os subdiretórios , Os arquivos HTML e os subdiretórios Correspondentes, por exemplo,

x.htm

x_files

pode aparecer bem distante no tipo em data-hora.

Sistemas de arquivos hierárquicos voltam, IIRC para Multics em MIT em 1969, e desde Então muitas pessoas reconheceram os Dois casos, dado um diretório X , (i) copie diretório X e todo o seu conteúdo e (ii) copie todo o conteúdo de X, mas não o diretório . Bem, se apenas de Os experimentos, XCOPY faz somente (ii).

Assim, os resultados dos 10 casos estão abaixo. Para cada caso, nos resultados as primeiras Três linhas têm os três primeiros argumentos Para XCOPY. Assim, a primeira linha tem o nome da árvore Do diretório a ser copiado, a 'Fonte'; a segunda linha tem o nome da árvore do diretório para obter as cópias, o 'destino', e a terceira linha tem as opções para o XCOPY. As linhas restantes 1-2 Têm os resultados da execução de XCOPY.

Um ponto importante sobre as opções é que as opções /X e/O resultam em resultado

Access denied

Para ver isso, compare o caso 8 com os outros casos Que eram os mesmos, não tinha /X e/O, mas copiei.

Esses experimentos me melhoram Entendem o XCOPY e contribuem com uma resposta Para a pergunta original.

======= case 1 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_1\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 2 ==================
"k:\software\dir_time-date\*"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_2\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 3 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_3\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 4 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_4\"
options = /E /F /G /H /K /R /V /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 5 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_5\"
options = /E /F /G /H /K /O /R /S /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 6 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_6\"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 7 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_7"
options = /E /F /G /H /I /K /R /S /Y
Result:  20 File(s) copied
======= case 8 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_8"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 9 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_9"
options = /I /S
Result:  20 File(s) copied
======= case 10 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_10"
options = /E /I /S
Result:  20 File(s) copied
0
a_programmer

Para cópia de pasta, você pode usar

robocopy C:\Source D:\Destination /E

Para cópia de arquivo

copy D:\Sourcefile.txt D:\backup\Destinationfile.txt /Y 

Excluir arquivo em alguma pasta última data de modificação mais do que um dia

forfiles -p "D:\FolderPath" -s -m *.[Filetype eg-->.txt] -d -[Numberof dates] -c "cmd /c del @PATH"

E você pode tarefa Shedule no Windows executar esta tarefa automaticamente em tempo específico.

0