O Robocopy não copia a pasta raiz e seu carimbo de data / hora - ele copia todos os subdiretórios e arquivos (quando as opções apropriadas são definidas) e parece não haver opção / argumento para informar ao Robocopy que você deseja a própria pasta raiz e seu carimbo de data / hora para ser copiado textualmente também.
Digamos que eu quero copiar C: / Brushes
O Robocopy copiará todos os seus subdiretórios e arquivos para o destino, mas não a pasta Brushes em si, com todos os atributos associados e carimbo de data / hora.
Você entende o que estou perguntando? Isso é bastante básico e o Robocopy parece não ter uma opção para isso. As pessoas já fizeram a pergunta em vários fóruns, mas, no que me diz respeito, ninguém respondeu à pergunta.
rsync
, mas e se você não tiver uma barra no final da pasta de destino? Que tal tentar modificar o script no nível da linha de comando em vez de usar a GUI? Sei que a ferramenta de linha de comando fará o que você precisa.Respostas:
Solte uma pasta
bat
ou use em Enviar para . Ele criará uma pasta com o nome e o horário do diretório de origem e copiará todos os arquivos.fonte
%~n1
?Eu concordo com o OP, não poder copiar a pasta raiz é uma grande falha de robocopy. Que tal enganar e mover a pasta pincéis para uma pasta temporária, executando a operação de robocópia na pasta temporária e depois movendo-a de volta?
Algo como:
fonte
Tente
md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
na linha de comando, substituindo os caminhos corretos.fonte
Como não vejo solução boa e fácil em nenhuma das respostas:
Se não houver solução para robocopy, você pode dar uma olhada no xxcopy (existem versões freeware e comerciais).
Obviamente, existem muitas outras alternativas ao robocopy, algumas estão listadas aqui .
Veja também Melhor Utilitário de Cópia de Arquivo Gratuito .
fonte
xxcopy
é um ótimo utilitário, mas a versão do freeware possui um prompt ao qual você deve responder se estiver usando uma lista grande de opções de linha de comando. Usandoxxcopy
em uma janela de comando, esse prompt extra é irritante. Mas evita (complica) o uso dexxcopy
um arquivo em lotes.A resposta do usuário105198 é a meio caminho,
D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
de fato, apenas criará uma nova pasta. Você precisará anexar / MIR e / DCOPY: T a elecombinados, significa: os atributos e os registros de data e hora do diretório de origem serão espelhados na pasta criada.
então:
fonte
Acho que você descobrirá que o Robocopy faz exatamente o que você deseja, desde que seja solicitado a copiar os carimbos de data / hora da pasta (/ DCOPY: T). Nas minhas experiências, descobri o seguinte comportamento (aparentemente não documentado) verdadeiro para o Robocopy:
As propriedades especificadas podem incluir (pelo menos) as informações de segurança (/ SEC) ou os carimbos de data / hora da pasta (/ DCOPY: T).
Portanto, no exemplo a seguir, a pasta c: \ destination \ receberá os mesmos carimbos de data e hora que a pasta c: \ source \.
Testei isso com as versões do Robocopy incluídas no Windows 7, Windows 8 e no Windows 2003 Resource Kit (somente parâmetro / SEC). Observe que apenas as versões mais recentes do Robocopy (XP026 e superior) suportam o parâmetro / DCOPY: T.
fonte
Se você combinar
/IF :: Include the following Files.
com/E :: copy subdirectories, including Empty ones.
você, obtém (próximo a) o efeito desejado:fonte
Robocopy não é realmente projetado para fazer isso facilmente. No entanto, existe um caminho.
A pasta raiz contém digamos 50 arquivos e 40 pastas. Você deseja apenas a pasta X (mas também deseja que seja a hora e a data).
O / DCOPY: T diz para manter os carimbos de data / hora da pasta. O / XF especifica quais arquivos NÃO copiar, / XD especifica quais pastas NÃO copiar. Apenas não especifique a pasta c: \ X.
A principal desvantagem disso é pesquisar todas as pastas e nomes de arquivos na raiz e chamá-los todos especificamente aqui. Se você estiver fazendo isso muito em sistemas diferentes, um script poderá ser escrito.
Exemplo de trabalho
robocopy c: \ testing c: \ abc / XF c: \ testing \ Testing.txt / XD "C: \ testing \ Nova pasta (2)" "C: \ testing \ Nova pasta (3)" / S / E / SEC / DCOPIA: T
Exemplo de trabalho raiz
robocopy c: \ d: \ / XF c: \ Testing.txt / XD "C: \ Nova pasta (2)" "C: \ Nova pasta (3)" / S / E / SEC / DCOPY: T
Meu teste funcionou, eu crio algumas pastas e subpastas, c: \ testing era raiz neste caso, c: \ abc era raiz de outra unidade (obviamente elas não são realmente, mas para esse propósito, deveria fazer sentido). A pasta que eu queria da raiz chamava-se "Nova Pasta", como você pode ver, eu não a especifiquei no / XD. Além disso, certifique-se de especificar c: \ ou os nomes que você usar serão globais. Em outras palavras, se eu não especificasse c: \ testing no arquivo Testing.txt, ele o omitiria de TODAS as subpastas sendo copiadas. O / SEC copiará toda a segurança do arquivo e carimbos de hora.
fonte
Em teoria, o uso
/DCOPY:T
deve resolver todos os seus problemas.Mas já vi isso acontecer, e não tenho certeza se chamaria de "bug", mas uma consequência da sequência de operações (OK, bug).
Este comando deve funcionar para copiar todos os arquivos de
C:\Brushes
paraD:\NEWBrushes
e/DCOPY:T
deve fazer com que os carimbos de data e hora da pasta de origem sejam copiados para a pasta de destino:O que eu vi (pelo menos em algumas versões do Robocopy) é que o comando é bem-sucedido, mas o carimbo de data e hora da
D:\NEWBrushes
pasta está definido para a data e hora atuais.Portanto, parece que o
/DCOPY:T
recurso não funciona para a pasta "base" (mais acima) que você está copiando.Acredito que esteja funcionando, mas que o registro de data e hora da pasta de destino está sendo "pisado" por operações que são posteriormente na sequência da operação.
O que acredito estar acontecendo para esse comando:
é algo como isto:
D:\NEWBrushes
se ela ainda não existirC:\Brushes
paraD:\NEWBrushes
C:\Brushes
paraD:\NEWBrushes
Parece que a Etapa 3, a modificação do conteúdo da pasta,
D:\NEWBrushes
faz com que o carimbo de data / horaD:\NEWBrushes
seja alterado.Para mim, a "solução alternativa" foi executar o
robocopy
comando para copiar os arquivos e pastas e, em seguida, executar o (mesmo)robocopy
comando pela segunda vez.Então, a primeira vez que você executa:
todos os arquivos e pastas serão copiados. Em seguida, execute-o novamente:
Na segunda vez que for
robocopy
executado, nenhum arquivo ou pastaD:\NEWBrushes
será modificado e a/DCOPY:T
opção informarárobocopy
para copiar o carimbo de data / hora deC:\Brushes
paraD:\NEWBrushes
(a menos que haja pastas / arquivosC:\Brushes
que foram alterados desde a primeira execução derobocopy
).fonte
Eu estava resolvendo as pastas raiz agora mesmo para um script de backup realmente rápido e fácil com robocopy, há um exemplo. Deve ajudar a qualquer pessoa:
fonte