2013-06-19 3 views
5

Я использую следующий код, чтобы создать новую папку с именем с датой сегодняшней:Командный файл Prompt/Bat - Создать новую папку с текущей датой

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

Теперь формат выглядит следующим образом:

20130619 

Как изменить формат ?:

2013_06_19 

Спасибо

ответ

7
for /f "tokens=1-3 delims=/" %%a in ("%date%") do md "%%a_%%b_%%c" 
+0

спасибо, работает как шарм – DextrousDave

+3

тот же результат вы можете получить с 'md '% date:/= _%" ':-) .. – Endoro

+0

спасибо! оцените – DextrousDave

2

ли это:

for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd1="%%k"_"%%i"_"%%j" 
mkdir %yyyymmdd1% 
+1

взяты из предыдущего ответа, который может помочь вам, http://stackoverflow.com/questions/11280077/batch-script-to-make-backup-folder-only-new-and-modified-files/ - просто посмотрите, как я манипулирую «%% i» или %% k или %% j и _ между ними – ilansch

+0

спасибо, но ваш ответ показывает только месяц и день в названии папки, а не год ... test it – DextrousDave

+0

привет, он показывает все это, может быть, вы не скопировали всю цепочку :) мой ответ - тот, который вы приняли. он идентичен и оригинален – ilansch

2

или просто

SET Today=%Date:~10,4%_%Date:~7,2%_%Date:~4,2% 

echo %today% 

выходы

2013_06_19 
Press any key to continue . . . 

Тогда вы могли бы легко использовать переменную сегодня для создания каталога т.д .:

mkdir %today% 

EDIT: Формат YYYY_MM_DD

+0

с вашим кодом, как и в настоящее время, он перенастраивает «сегодня», поскольку имя папки – DextrousDave

+0

да, это не то, что вы хотели? вы можете выполнить букву диска или другую часть пути. Это решение не содержит никаких циклов –

22

% Дата% зависит от настроек компьютера и языка. Вот надежный способ получить дату и время. Win XP pro и выше.

Если вам нужно использовать ваш командный файл на неизвестных машинах, тогда это стоит использовать.

:: time and date stamp YYYYMMDD, HHMMSS and YYYY-MM-DD_HH-MM-SS 
@echo off 
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a 
set datestamp=%dt:~0,8% 
set timestamp=%dt:~8,6% 
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 stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec% 
echo stamp: "%stamp%" 
echo datestamp: "%datestamp%" 
echo timestamp: "%timestamp%" 

pause 
+3

, наконец, кто-то, кто не полагается на зависящую от языковой версии% date%! –

Смежные вопросы