Date bat файл
windows - Как создать папку с именем в качестве текущей даты в пакетных (.bat) файлах
Это зависит от региональных настроек компьютера, поэтому сначала проверьте вывод даты в командной строке или сделайте эхо даты.
Для этого создайте командный файл и добавьте нижеприведенный контент
echo %date%<br\> pauseОн производит вывод, в моем случае это показывает Пт 05/06/2015.
Теперь нам нужно избавиться от косой черты (/)
Для этого включите приведенный ниже код в пакетном файле.
set temp=%DATE:/=%если вы повторяете "temp", вы можете видеть дату без косой черты.
Теперь вам нужно всего лишь форматировать дату так, как вы хотите.
Например, мне нужна дата в формате YYYYMMDD, тогда мне нужно установить имя dirname ниже
Чтобы объяснить, как это работает, нам нужно сравнить значение temp
Fri 05062015.
теперь поместите все символы с номерами, начинающимися с 0.
Пт 0506201 5
01234567891011
Итак, для формата даты, который мне нужен, 20150605,
2015 год, в котором 2 находится на восьмом месте, поэтому с 8-й позиции до 4-х мест он достигнет 2015 года.
Месяц 06, в котором 0 находится на шестой позиции, поэтому с 6-й позиции до 2-х мест он составит 06.
День 05, в котором 0 находится в 4-й позиции, поэтому с 4-го положения до 2-х мест он будет делать 05.
Итак, чтобы настроить окончательный формат, мы имеем ниже.
SET dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"Чтобы увеличить формат даты с помощью "-" или "_" между датой, месяцем и годом, вы можете изменить ниже
SET dirname="%temp:~8,4%-%temp:~6,2%-%temp:~4,2%"или
SET dirname="%temp:~8,4%_%temp:~6,2%_%temp:~4,2%"Таким образом, окончательный код партии будет
=============================================== =======
@echo off<br\> set temp=%DATE:/=%<br\> set dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"<br\> mkdir %dirname%<br\>=============================================== =======
Каталог будет создан в том месте, где выполняется эта партия.
Как создать файл с именем равным текущей дате и времени |
Чтобы создать из командной строки файл с именем равным текущей дате и времени создадим cmd файл с таким содержимым:
rem @echo off set dd=%DATE% set tt=%TIME% set /a ddd=%dd:~0,2% IF %ddd% LSS 10 ( SET day=0%ddd%) else ( SET day=%ddd%) set month=%dd:~3,2% set year=%dd:~6,4% set /a ttt=%tt:~0,2% IF %ttt% LSS 10 ( SET hour=0%ttt%) else ( SET hour=%ttt%) SET minute=%tt:~3,2% SET sec=%tt:~6,2% echo %day% %month% %year% %hour% %minute% %sec% copy nul %day%%month%%year%_%hour%%minute%%sec%.txtНеобходимо помнить, что получение даты и времени зависит от региональных настроек Windows. Поэтому первая строка закомментирована для возможности смотреть на результат каждой команды.Рассмотрим команды.
- В переменные dd и tt получаем текущую дату и время.
- В переменную ddd из переменной с датой dd получаем теекущее число. Команда %dd:~0,2% значит взять из переменной dd 2 символа с начала строки (0 это первый символ строки). Например, на моем компьютере числа всегда двучначные и я не нуждаюсь в такой проверке и эта конструкция у меня заменяется на команду set day=%dd:~0,2%
- Далее с 7 по 9 строку кода идет проверка текущего числа. Если число меньше 10, то начале числа добавляем символ 0. Это надо на случай если у нас дата выглядит например так: 1.12.2010. Чтобы все составляющие даты были одинаковой длины. Тут же получаем готовую переменную day, в которой хранится значение текущего числа
- Строка 10. В переменную month из dd получаем текущий месяц. Берем два символа, начиная с третьего. Здесь можно так же как и с числом сделать проверку на меньше или больше 10. Но у меня почему-то на всех компах месяц всегда двузначный. Но этот момент надо учитывать.
- Строка 11. В переменную year из dd получаем текущий год. Для этого берем 4 символа, начиная с шестого. Вообще с какого символа брать и сколько символов надо брать, легко отследить после команд из 3 и 4 строк кода. После выполнения cmd файла смотрим какие строки выдает ОС и отсчитываем с какого символа идет число, месяц и год.
- Со строки 13 по 20 описаны аналогичные действия по получению текущего времени в переменные hour, minute и sec.
Приготовления закончены, команда в строке 22 выводит полученные значения. Если всё выводится корректно, то можно приступить к созданию файла.Команда
copy nul %day%%month%%year%_%hour%%minute%%sec%.txtсоздает пустой текстовый файл 09092010_102428.txtДля создания архивов я обычно делаю чтобы год был в начале имени файла, затем месяц, а уже потом число. Это удобно для сортировки архивов.
copy nul %year%%month%%day%_%hour%%minute%%sec%.txtРезультат такой команды: 20100909_102441.txt
www.procomp-blog.ru
Достаточно часто необходимо создавать папку с именем равным текущей дате и затем копировать в нее, например, бэкап. Есть насколько вариантов создания такой папки: MD %SYSTEMDRIVE%\%date:~-10% Такая команда создаст в корне системного диска папку с именем равным текущей дате. Эта команда не сработает, если региональные установки отличны от русского и в разделителях даты используется слеш. В таком случае, поможет один из следующих скриптов: md %systemdrive%\%date:~0,2%_%date:~3,2%_%date:~6,4% или md %systemdrive%\%date:~6,4%_%date:~3,2%_%date:~0,2% Во втором случае, папки будут сортироваться по алфавиту. Как вариант, можно рассмотреть добавление к имени файла текущей даты: @echo off for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set mydate=%%4.%%3.%%2 ren test.txt test%mydate%.txt Имя файла test.txt будет переименовано в test2005.03.05.txt
|
www.windowsfaq.ru