Как создать папку с именем текущей даты в пакетных (.bat) файлах - PullRequest
36 голосов
/ 30 марта 2011

Я не очень разбираюсь в синтаксисе файлов Windows .bat.Мое простое требование - создать папку в определенном месте с именем в качестве текущей даты.Я пытался найти это в Google, но не нашел хорошего варианта.Есть ли способ сделать это?

Ответы [ 21 ]

36 голосов
/ 30 марта 2011
mkdir %date:~-4,4%%date:~-10,2%%date:~7,2%
20 голосов
/ 30 марта 2011

Быстро и грязно: если вы можете жить с датой UTC вместо местной, вы можете использовать:

for /f "skip=1" %%d in ('wmic os get localdatetime') do if not defined mydate set mydate=%%d
md %mydate:~0,8%

Работает во всех регионах. Только на XP и выше.

18 голосов
/ 30 марта 2011

Попробуйте это (эквивалент обратных кавычек bash):

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a
mkdir %datestr%

Для получения дополнительной информации см. http://ss64.com/nt/for_cmd.html

14 голосов
/ 30 марта 2011

Вам нужно избавиться от символов '/' в дате, прежде чем вы сможете использовать ее в mkdir следующим образом:

setlocal enableextensions
set name=%DATE:/=_%
mkdir %name%
8 голосов
/ 14 июня 2016

Если вы хотите mm-dd-yyyy формат, вы можете использовать:

mkdir %date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%
7 голосов
/ 04 июня 2015

Это зависит от региональных настроек компьютера, поэтому сначала проверьте вывод даты, используя командную строку или повторив дату.

Для этого создайте командный файл и добавьте содержимое ниже

echo %date%    
pause

выдаёт вывод, в моём случае показывает пт 05.06.2015.

Теперь нам нужно избавиться от косой черты (/)

Для этого включите приведенный ниже код в пакетный файл.

set temp=%DATE:/=%

если вы повторяете "temp", вы можете увидеть дату без косой черты.


Теперь все, что вам нужно сделать, это отформатировать дату так, как вы хотите.

Например, мне нужна дата в формате ГГГГММДД, затем мне нужно установить dirname, как показано ниже

Чтобы объяснить, как это работает, нам нужно сравнить значение temp

Пт 05062015.

теперь позиционируйте каждый символ цифрами, начинающимися с 0.

Пт 0506201 5

01234567891011

Итак, формат даты, который мне нужен, это 20150605,

Год 2015, в котором 2 находится на 8-й позиции, поэтому с 8-й позиции до 4-х он будет 2015.

Месяц 06, в котором 0 находится на 6-й позиции, поэтому с 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    
set temp=%DATE:/=%
set dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"
mkdir %dirname%

=============================================== =======

Каталог будет создан в том месте, где выполняется этот пакет.

7 голосов
/ 30 марта 2011
echo var D = new Date() > tmp.js 
echo D = (D.getFullYear()*100+D.getMonth()+1)*100+D.getDate() >> tmp.js 
echo WScript.Echo( 'set YYYYMMDD='+D ) >> tmp.js 
echo @echo off > tmp.bat 
cscript //nologo tmp.js >> tmp.bat 
call tmp.bat
mkdir %YYYYMMDD%
5 голосов
/ 30 апреля 2013
for /F “tokens=1-4 delims=/ ” %%A in (‘date /t’) do (
    set DateDay=%%A
    set DateMonth=%%B
    set DateYear=%%C
)
set CurrentDate=%DateDay%-%DateMonth%-%DateYear%
md %CurrentDate%

Это даст вам вновь созданную папку с сегодняшней датой в формате DD-MM-YY

Источник: База знаний Али

4 голосов
/ 06 марта 2013

У меня была проблема с этим, потому что мой сервер АБСОЛЮТНО должен был иметь свою дату в формате MM / dd / yyyy, в то время как я хотел, чтобы каталог был в формате YYYY-MM-DD для удобства. Вот как получить его в формате ГГГГ-ММ-ДД, независимо от того, какие региональные настройки установлены.

Узнайте, что отображается при использовании% DATE%:

В командной строке введите:

ECHO %DATE%

Шахта вышла 03.06.2013 (как и 6 марта 2013 года)

Поэтому, чтобы получить имя каталога как 2013-03-06, введите его в свой пакетный файл:

SET dirname="%date:~6,4%-%date:~0,2%-%date:~3,2%"
mkdir %dirname%
3 голосов
/ 30 марта 2011

Это должно работать:

mkdir %date%

Если это не так, попробуйте это:

setlocal enableextensions
mkdir %date%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...