Подтвердить что ты не робот

Как создать папку с именем в качестве текущей даты в пакетных (.bat) файлах

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

mkdir %date:~-4,4%%date:~-10,2%%date:~7,2%

Ответ 3

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

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

Работает во всех локалях. Однако только на XP и выше.

Ответ 4

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

setlocal enableextensions
set name=%DATE:/=_%
mkdir %name%

Ответ 5

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

mkdir %date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%

Ответ 6

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%

Ответ 7

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

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

echo %date%    
pause

Это производит вывод, в моем случае это показывает пт 05/06/2015.

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

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

set temp=%DATE:/=%

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


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

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

Чтобы объяснить, как это работает, нам нужно сравнить значение 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%

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

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

Ответ 8

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

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

Ответ 9

У меня возникла проблема с этим, потому что мой сервер АБСОЛЮТНО должен был иметь свою дату в формате MM/dd/yyyy, в то время как мне хотелось, чтобы каталог был в формате YYYY-MM-DD для удобства. Здесь, как получить его в формате 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%

Ответ 10

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

mkdir %date%

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

setlocal enableextensions
mkdir %date%

Ответ 11

Я сижу точно в той же лодке, что и вы, как только я до утра 10, я не могу использовать ниже, я установил свое время с 12 часов до 24 часов, изменил hh/mm на HH/mm. Я пробовал больше всего от кодов, которые я мог найти. ниже поможет хотя бы немного. настроить и исправить:)

Ниже также может помочь

set DD =% DATE: ~ 0,2%

установить MM =% DATE: ~ 3,2%

установить YY =% DATE: ~ 8,2%

установить YYYY =% DATE: ~ 6,4%

set hh =% hh: = 0%

set mm =% ВРЕМЯ: ~ 3,2%

если "% time: ~ 0,1%" == "" (установить folderdate = 0% time: ~ 1,1%) ELSE set folderdate =% time: ~ 0,2%

mkdir folderdate =% date: ~ 6 %% date: ~ 3,2 %% date: ~ 0,2% _% folderdate %% time: ~ 3,2%

copy\Makereport *.CSV\Makereport\%folderdate%\

cd% folderdate% REM - (7zip в c:\пакет) Path = c:\batch

7z a Retail.zip *.CSV -pRetailPassword

CD..

del *.csv

Ответ 12

Если ваш язык имеет формат даты "DDMMYYYY", вам нужно установить его таким образом:

set datestr=%date:~-4,4%%date:~3,2%%date:~-10,2%
mkdir %datestr%

Ответ 13

это более простое решение.

@ECHO OFF
set name=%date%
echo %name%
mkdir %name% 

Ответ 14

Это работает для меня, попробуйте:

ECHO %DATE:~7,2%_%DATE:~4,2%_%DATE:~12,2%

Ответ 15

Вам понравится, измените его так, чтобы он соответствовал вашим требованиям.

mkdir today
Copy Desktop\test1\*.* today
setlocal enableextensions
set name=%DATE:/=_%
Rename "today" _OlddatabaseBackup_"%name%"

Ответ 16

выражение %date:~p,n% возвращает n количество символов из позиции p в строке даты.

если моя системная строка даты - Mon23/11/2015

команда Дата%: ~ 1,3% возвращает значение Пн

команда Дата%: ~ 10,4% возвращает значение 2015

и в сочетании с командой md (или mkdir)

команда md% дата: ~ 10,4 %% дата: ~ 7,2 %% дата: ~ 4,2% делает каталог с именем 20151123

Аналогично, если строка даты в формате Понедельник, 23/Ноябрь/2015

команда md% дата: ~ 16,4 %% дата: ~ 12,3 %% дата: ~ 9,2% делает каталог с именем 2015Nov23

Если вы случайно возвращаете символы из строки даты, которые недопустимы в именах папок или используют недопустимые значения для p и n, вы получите сообщение об ошибке. Кроме того, если вы возвращаете значения, которые включают \, это может создать папку в папке.

Ответ 17

Спасибо за информацию все, очень полезно. Мне нужно было что-то, что могло бы создать "резервную" папку так же часто, как каждую минуту в том же каталоге, а также вызвать ее позже в script. Вот что я придумал:

@ echo off

CD %userprofile%\desktop

SET Datefolder="%DATE:~4,2%-%DATE:~7,2%-%DATE:~12,2%_%time:~1,1%%time:~3,2%"

MD "%Datefolder%"

Это дает мне папку на текущем рабочем столе пользователя с именем: mm-dd-yy_hmm (час минута), т.е.: 07-28-15_719

Ответ 18

fooobar.com/questions/206414/... Ответ на foxidrive помог мне получить папку с датой и временем, которое я хотел. Я хотел бы поделиться этим методом здесь, так как он отлично подойдет для меня, и я думаю, что он может помочь другим людям, независимо от их локали.

rem The four lines below will give you reliable YY DD MM YYYY HH Min Sec MS variables in XP Pro and higher.

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" & set "MS=%dt:~15,3%"

 set "dirname=%YYYY%-%MM%-%DD% %HH%-%Min%-%Sec%"

 :: remove echo here if you like
 echo "dirName"="%dirName%"

Ответ 19

Используйте этот пакетный скрипт, сделанный мной:

@echo off
title Folder Creator
color b
setlocal enabledelayedexpansion
echo Enter the folder name, you can use these codes:
echo /t - Time (eg. 16:29)
echo /d - Date (eg. 17-02-19)
echo /a - Day (eg. 17)
echo /m - Month (eg. 02)
echo /y - Year (eg. 19)
echo /f - Full Year (eg. 2019)
echo.
set /p foldername=Folder Name:
set foldername=%foldername:/t=!time:~0,5!%
set foldername=%foldername:/d=!date:~0,2!-!date:~3,2!-!date:~8,2!%
set foldername=%foldername:/a=!date:~0,2!%
set foldername=%foldername:/m=!date:~3,2!%
set foldername=%foldername:/y=!date:~8,2!%
set foldername=%foldername:/f=!date:~6,4!%
md %foldername%

Например, если вы хотите создать папку с именем даты в формате DD-MM-YY, введите "/d", но если вы хотите сделать это в формате DD-MM-YYYY, введите "/a-/м-/ф".

Ответ 20

G:

cd G:/app/

mkdir %date:~7,2%%date:~-10,2%%date:~-4,4% 

cd %date:~7,2%%date:~-10,2%%date:~-4,4% 

sqlplus sys/sys as sysdba @c:/new

Ответ 21

Мне нужны были и дата, и время:

mkdir %date%-%time:~0,2%.%time:~3,2%.%time:~6,2%

Который создал папку, которая выглядела как: 2018-10-23-17.18.34

Время нужно было объединить, потому что оно содержало : что не разрешено в Windows.