Создание папки с использованием bat-файла - PullRequest
16 голосов
/ 22 февраля 2009

Мне нужно написать bat-файл, который создает новую папку, используя текущую дату и время для имени папки. Я придумал следующее:

for /f "tokens=1-3 delims=:," %%i in ("%TIME%") do md %DATE%-%%i.%%j.%%k

Есть ли в этом коде недостатки? Есть ли более простой / более естественный способ сделать это?

Ответы [ 8 ]

24 голосов
/ 22 февраля 2009

Для этого можно использовать подстроку и встроенные переменные% DATE% и% TIME%:

@echo OFF

:: Use date /t and time /t from the command line to get the format of your date and
:: time; change the substring below as needed.

:: This will create a timestamp like yyyy-mm-dd-hh-mm-ss.
set TIMESTAMP=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

@echo TIMESTAMP=%TIMESTAMP%

:: Create a new directory
md "%1\%TIMESTAMP%"
6 голосов
/ 22 февраля 2009

Я использую эту летучую мышь

for /F "tokens=1-4 delims=. " %%i in ('date /t') do (
set Day=%%i
set Month=%%j
set Year=%%k
)

for /F "tokens=1-4 delims=: " %%i in ('time /t') do (
set Hour=%%i
set Minute=%%j
set Second=%%k
)


md %1\%Year%-%Month%-%Day%

Надеюсь, это поможет.

1 голос
/ 26 августа 2013

Причина, по которой простой% time% не работает, заключается в том, что он отделен от: что не разрешено в пакетном сценарии. Но этот должен работать нормально:

Это очень хорошо работает для меня.

Rem Get Day,Mth & Year from %Date%
set Day=%Date:~0,2%
set Mth=%Date:~3,2%
set Yr=%Date:~6,4%
REM Get Hour and Min from %Time%
set Hour=%Time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set Min=%Time:~3,2%

mkdir %date%-%hour%.%min%
1 голос
/ 04 ноября 2011

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

Вот моя версия:

for / f "tokens = 1-3 delims =: /" %% i in ("% DATE%") установить DATESTAMP = %% i. %% j. %% k
@ echo Каталог будет создан с таким именем:
@ echo backup.% DATESTAMP%
резервное копирование md.% DATESTAMP%
@ echo Директория создана, теперь продолжается копирование файла ...
@ echo, пожалуйста, убедитесь, что на ПК нет электронной почты или каких-либо открытых документов.
пауза
cd резервная копия.% DATESTAMP%
тд "Общие документы"
xcopy "c: \ Documents and Settings \ все пользователи \ документы \ документы" "Общие документы" / E / C / I / H / Q
@ echo в Документах завершено.

и т. Д.)

0 голосов
/ 05 апреля 2013

это работает довольно хорошо для меня

dkdir foldername

cd foldername

dkdir %date% %time% 

cls
0 голосов
/ 21 августа 2012

Вы можете воспользоваться GNU sh-utils , используя спецификаторы формата date.exe:

for /f "delims=" %%a in ('date.exe +%%Y-%%m-%%d.%%H-%%M') do @set dd=%%a
md %dd%

Это решение особенно важно для пользователей с локализованными версиями Windows.

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

Используйте date --help для полного списка спецификаторов формата.

0 голосов
/ 30 апреля 2012

Вот мое решение (модифицированное от Лопкию). Он создает папку с использованием метки даты. Если папка с таким именем уже существует, добавьте к ней целое число, чтобы сделать ее уникальной. Поместите это в файл .bat и передайте путь к родительской папке.
Протестировано в Windows 7 Home Premium x64.

REM Create a folder using the current date.  If such a folder already exists, append a number to make it unique.
@ECHO OFF
for /F "tokens=2-5 delims=/ " %%i in ('date /t') do (
set Day=%%j
set Month=%%i
set Year=%%k
)

set Path=%~1\%Year%-%Month%-%Day%
set /a inx=2

:LOOP
IF NOT EXIST "%Path%" GOTO CREATE
set Path=%~1\%Year%-%Month%-%Day% (%inx%)
set /a inx+=1
if %inx% gtr 9 goto :END REM Eh, giving up.
goto LOOP
:END

:CREATE
md "%Path%"
:END
0 голосов
/ 20 марта 2012

не пытались ли вы создать новый создатель новой папки, используя дату и время, сохраненные как new_folder_maker.bat с этим кодом

:start
@echo off
md new_folder_%date%_%time%
exit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...