Создание папки с использованием файла bat

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

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

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

Ответы

Ответ 1

Для этого вы можете использовать подстроку и встроенные переменные% 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%"

Ответ 2

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

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%

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

Ответ 3

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

Здесь моя версия:

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

и т.д.:)

Ответ 4

Причина, по которой простой% 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%

Ответ 5

Вы пробовали? Ваша командная строка вызывает ошибку на моей стороне.

Ответ 6

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

:start
@echo off
md new_folder_%date%_%time%
exit

Ответ 7

Здесь мое решение (изменено с lopkiju's). Он создает папку с помощью datestamp. Если папка с таким именем уже существует, добавьте к ней целое число, чтобы сделать его уникальным. Поместите это в файл .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

Ответ 8

Вы можете использовать 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 для полного списка спецификаторов формата.

Ответ 9

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

dkdir foldername

cd foldername

dkdir %date% %time% 

cls