Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   как изменить формат даты в xcopy (http://forum.oszone.net/showthread.php?t=306971)

shugurui 22-10-2015 11:35 2566894

как изменить формат даты в xcopy
 
Доброго времени суток!

Пишу скрипт для автоматического бэкапирования, а точнее для его инкрементальных копий и столкнулся с такой проблемой:

xcopy c:\1 \\remotepc\backup /e/f/v/d:%date% >> c:\log\ilog.txt

и вот в чем собственно проблема...
Starts 11:30:49,18, 22.10.2015
Недопустимый параметр: /d:22.10.2015
Stop 11:30:49,24


т.к. программа американская, то формат даты там MM-dd-yyy, а если использовать %date% то получается конфликт т.к. формат даты на сервере установлен локальный dd-MM-yyyy
З.Ы. формат даты поменять не могу т.к. там крутится база.

Если оставить лишь ключ /d без даты, как описано в документации, то вообщем-то должна подтягиваться текущая дата автоматически, но вопреки описанию копируются абсолютно все файлы...

Elven 22-10-2015 11:58 2566908

Код:

set tdate=%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%
xcopy c:\1 \\remotepc\backup /e/f/v/d:%tdate% >> c:\log\ilog.txt


Graf_de_Sivale 22-10-2015 12:01 2566910

формат даты зависит от установки COUNTRY

Foreigner 22-10-2015 12:02 2566911

shugurui,
Цитата:

Цитата shugurui
Недопустимый параметр: /d:22.10.2015 »

Ни о чем не намекает?
Код:

xcopy /? | findstr "\/D:"
/D:м-д-г    Копирует файлы, измененные не ранее указанной даты.

Измените:
Код:

for /f "tokens=1-3 delims=." %%i in ("%date%") do set "d=%%j-%%i-%%k"
xcopy c:\1 \\remotepc\backup /e/f/v/d:%d% >> c:\log\ilog.txt


shugurui 22-10-2015 12:25 2566928

Цитата:

Цитата Foreigner
Ниочем не намекает?
Код:
xcopy /? | findstr "\/D:"
/D:м-д-г Копирует файлы, измененные не ранее указанной даты. »

Говорит, по этому и спрашиваю, как можно это сделать так, чтоб это было автоматически, а не каждый раз добавлять дату вручную.

Цитата:

Цитата Elven
Код:
set tdate=%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%
xcopy c:\1 \\remotepc\backup /e/f/v/d:%tdate% >> c:\log\ilog.txt »

Спасибо! только я поменял местами месяц и день и все заработало как часики:
Код:

set tdate=%DATE:~3,2%-%DATE:~0,2%-%DATE:~6,4%
xcopy c:\1 \\remotepc\backup /e/f/v/d:%tdate% >> c:\log\ilog.txt

Цитата:

Цитата Graf_de_Sivale
формат даты зависит от установки COUNTRY »

Согласен, но изменение таких параметров может повлечь неожиданные последствия...
Так что лучше воспользоваться назначением переменной и жить спокойной :)

Elven 22-10-2015 12:34 2566933

Цитата:

Цитата shugurui
только я поменял местами месяц и день »

Пардон, результат невнимательности.

shugurui 22-10-2015 13:25 2566942

Цитата:

Цитата Foreigner
for /f "tokens=1-3 delims=." %%i in ("%date%") do set "d=%%j-%%i-%%k" »

буду благодарен за разъяснение или подтверждение моих соображений по поводу этого кода:
Вызываем луп для токенов с 1-3 (их всего 3 = мм-дд-гг) и их разделителем в виде "."
для переменной %%i(1) в константе %date% назначаем переменную d в которой меняем последовательность токенов %%j(2)-%%i(1)-%%k(3)
Также понимаю, что буквы i,j и k в данном случае последовательны по алфавиту и могут быть заменены на "a b c" и т.д.
Прошу заранее извинить, т.к. пришел к этим скриптам довольно не давно, и хотел бы понять логику.

Foreigner 22-10-2015 13:31 2566945

shugurui, В общем вы все правильно поняли. %date% разбивается на части (токены), разделителем которых служит точка, а потом просто меняется их порядок при назначении новой переменной %d%

shugurui 22-10-2015 13:38 2566947

Foreigner, спасибо!

Опиум 25-10-2015 11:05 2567885

robocopy уже советовали использовать?

Код:

          /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
          /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
          /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n.
          /MINLAD:n :: MINimum Last Access Date - exclude files used since n.
                      (If n < 1900 then n = n days, else n = YYYYMMDD date).

Код:

>> c:\log\ilog.txt
не будет содержать ошибки.

shugurui 26-10-2015 11:47 2568251

Цитата:

Цитата Опиум
robocopy уже советовали использовать? »

Еще не советовали. скорее это на перспективу. Пока достаточно хсору + то как задать переменную времени.
Спасибо за совет :)


Время: 15:44.

Время: 15:44.
© OSzone.net 2001-