Я запускаю программу из командного файла, который, когда это сделано, выполняет автоматическое резервное копирование моей базы данных MySQL.
Мне бы хотелось, чтобы командный файл создавал разные резервные копии для каждого прогона, чтобы я мог вернуться.
Желаемое имя файла будет gnucash_shockwave-20121128210344.sql (формат даты ГГГГ-ММ-ДД-ЧЧ-ММ-СС)
Я гугл несколько вещей , которые считают попробовать %DATE:~4%
и %Date.Year%
но я получаю сообщение об ошибке:The system cannot find the specified path.
Если я удаляю попытку поставить метку времени, скрипт работает нормально, но перезаписывает предыдущую резервную копию
Вот фрагмент кода, о котором я говорю:
@REM *** EXECUTION ***
echo. Starting backup...
SET timestamp %DATE:~-4%%DATE:~4,2%%DATE:~7,2%%TIME%
%mysqldir%\mysqldump -u %mysqluser% -p%mysqlpassword% -h %mysqlhost% -P %mysqlport% --databases --routines --verbose gnucash_shockwave > %BackupDir%\gnucash_shockwave-%timestamp%.sql
echo.------------------------------------------------------
echo. Backup complete!
Какие-либо предложения?
windows
batch-file
date-time
guyfromfl
источник
источник
Ответы:
Формат даты и времени зависит от того, что вы указали в апплете « Регион и язык» .
Запустите следующий пакетный файл (в котором предполагается, что дд / мм / гггг и чч: мм: сс ) и измените извлечение подстроки (используя символы: и ~), как требуется, чтобы получить правильные детали из строк даты и времени:
Для получения дополнительной информации о извлечении подстроки введите
set /?
в командной строке или перейдите на эту страницу .источник
> echo yyyy = %DATE:~6,4%
производитьyyyy = /20/
. Однакоecho yyyy = %DATE:~10,4%
естьyyyy = 2019
.Вот что сработало для меня.
источник
С небольшой настройкой я получил это
Результат:
"test-do_25_06-2015-22_21_51.txt" (Thursday_25th_June_2015-22:21.51)
источник
%DATE%
~Ddd MM/DD/YYYY
, тогда как этот предполагает не регион США, где%DATE%
~DD/MM/YYYY
(без дня недели). И этот ответ отличается от ответа Карана тем, что этот вопрос неправильный - вопрос задает ГГГГММДД; этот ответ дает DD_MM – YYYY.Извините за задержку ...
Единственный надежный способ получить соответствующую дату независимо от региональных настроек - это решение foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script
источник
я думаю, что это улучшает ответ @Nick Rogers немного.
Пример: в немецком locate (de_DE) ведущие пробелы в часах ниже 10.
также я хотел ведущий ноль в час. «echo -! ^ _ hh! -» дает «09» вместо «9»
поэтому я разбил код на две части для лучшего чтения. этот пример должен соответствовать большему количеству локалей.
+ бонус: _ms = миллисекунды, или последние две цифры (-;
примечание: иногда требуется ЧАС, см. код внутри
выходы: echo fullTime = 15062018-10182821
источник
самый короткий (самый универсальный?) ответ соответствует следующему сценарию TimeStamp.cmd, содержащему всего три строки кода (исключая комментарии и т. д.) ...
Обратите внимание на необходимость использовать %% вместо% для переменной в инструкции FOR в командном файле
... результаты выполнения (пустые строки и комментарии удалены) ...
источник