Alguém poderia me ajudar com minha sintaxe?
Existem vários problemas com o seu arquivo de lote:
-
As opções para o xcopy são após a origem e o destino
XCOPY source [destination] [options]
-
Seu comando
SET dateNtime...
está quebrado.-
Contém espaços e espaços à direita.
-
Usar
%date%
para fornecer uma solução depende das configurações de Localidade, Regional e Idioma do SO. -
Em vez de tentar corrigir seu código, forneci código de trabalho usando
wmic
(consulte getdate ) -
Esse código funciona independentemente do idioma do sistema operacional, idioma ou formato de data escolhido pelo usuário (Painel de Controle / Regional) e é muito fácil alterar o formato de saída.
-
O arquivo em lote a seguir corrige esses dois problemas:
@echo off
setlocal enableDelayedExpansion
set/P Drive= Enter destination drive (with colon):
::
set BACKUPCMD=xcopy
SET BACKUPOPTIONS=/S /D /I /Y /Q /C /T
::
rem get date independently of OS Locale, Language or the user's chosen date format (Control Panel/Regional).
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-6" %%g in ('wmic Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year ^| findstr /r /v "^$"') do (
set _day=00%%g
set _hours=00%%h
set _minutes=00%%i
set _month=00%%j
set _seconds=00%%k
set _year=%%l
)
rem pad with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
set _hh=%_hours:~-2%
set _mm=%_minutes:~-2%
set _ss=%_seconds:~-2%
rem adjust _date as appropriate for your requirements
set _date=%_year%%_month%%_day%%_hh%%_mm%%_ss%
::
set directory=TEST
set source=%directory%
set destination=%Drive%\ARCHIVE_%_date%\%directory%
echo %BACKUPCMD% "C:\%source%\*.*" "%destination%" %BACKUPOPTIONS%
Notas:
- Não sei com certeza qual é o formato de data que você está procurando.
- Altere
set _date=%_year%%_month%%_day%%_hh%%_mm%%_ss%
conforme apropriado para obter o formato de data obrigatório. - Remova o último
echo
quando estiver satisfeito com o comandoxcopy
.
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.
- getdate - Exibe a data e a hora independentemente da localidade do SO, idioma ou o formato de data escolhido pelos usuários (Painel de Controle / Regional ).
- wmic - Comando de instrumentação de gerenciamento do Windows.
- xcopy - Copie arquivos e / ou árvores de diretórios para outra pasta.