Como posso evitar que o XCOPY copie mais do que deveria?

1

Eu tenho um script para copiar arquivos de uma pasta para outra. O comando XCOPY se parece com isto:

 XCOPY /E /Y /V /D:%date% %reportsDataPath% TMP\

O sinalizador de data deve copiar apenas os arquivos da data especificada ou posterior, mas no TMP eu vejo que copiou os arquivos criados anteriormente. No entanto, ele não copia todos os dados dos arquivos. Em vez disso, copia o arquivo raiz e os subdiretórios sem os dados que devem conter.

Existe algum erro no meu comando que faz com que copie esses arquivos?

    
por user2331063 26.11.2013 / 16:04

1 resposta

3

%date% está apresentando um formato incorreto para o comando, a ajuda diz que a opção /D espera o formato m-d-y , enquanto echo %date% forneceria Tue 11/26/2013 . Significa que você precisa reformatar a data para estar em conformidade.

Acho que você pode corrigir isso com:

@echo off

:GetDate
for /f "skip=1 tokens=1-3" %%a in ('WMIC Path Win32_LocalTime Get Day^,Month^,Year') ^
do (
    set mydate=%%b-%%a-%%c
    goto CopyScript
)

:CopyScript
 xcopy /e /y /v /d:%mydate% %reportsDataPath% TMP\

Atualização # 1

Para os futuros visitantes, acredito que esta atualização lhe dará o formato de data correto, independentemente da região. Se alguém de outra localidade (fora dos EUA e que usa um formato diferente de mm / dd / aaaa por padrão) puder verificar, isso seria incrível.

Atualização nº 2

Usando o powershell, você também pode obter isso (os comandos cmd ainda funcionam no Powershell, mas a funcionalidade geral é massivamente expandida).

Get-Date -Format MM-dd-yyyy
    
por 26.11.2013 / 16:14