Создание папки с использованием файла 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