При поддержке компании Mobatime Systems: лидера в разработке, производстве и продаже приборов и систем времени. Подробнее...
Сайт · Форум · Инструменты WindowsFAQ.ru - Сайт о Windows, компьютерах, системном администрировании, локальных сетях

Поиск

Друзья

Клуб любителей ASPLinux
Kerio Winroute Firewall инструкции настройки

Шаблоны

New_WindowsFAQ
Главная arrow FAQ arrow bat-файлы arrow Как создать папку с именем равным текущей дате
Как создать папку с именем равным текущей дате Версия для печати

Достаточно часто необходимо создавать папку с именем равным текущей дате и затем копировать в нее, например, бэкап. Есть насколько вариантов создания такой папки:

MD %SYSTEMDRIVE%\%date:~-10%

Такая команда создаст в корне системного диска папку с именем равным текущей дате. Эта команда не сработает, если региональные установки отличны от русского и в разделителях даты используется слеш. В таком случае, поможет один из следующих скриптов:

md %systemdrive%\%date:~0,2%_%date:~3,2%_%date:~6,4%

или

md %systemdrive%\%date:~6,4%_%date:~3,2%_%date:~0,2%

Во втором случае, папки будут сортироваться по алфавиту.

Как вариант, можно рассмотреть добавление к имени файла текущей даты:

@echo off
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set mydate=%%4.%%3.%%2
ren test.txt test%mydate%.txt

Имя файла test.txt будет переименовано в test2005.03.05.txt

zoNUDa
создано: 09-12-2007 23:43
Необходимо написать бат файл, распаковывающий файлы архива в папки, названные их расширением.
rjEugen
создано: 24-02-2008 16:57
Здравствуйте, уважаемые. С прошедшим 23.02.
Сразу оговорюсь, я не программист, просто аналогичная задача, только в имя папки нужно добавить время. Объемы - небольшие, поэтому места для таких бэкапов есть. А потеря этих файлов приводит к потере гигабайт ценной информации (кто знает eMule - поймет меня).
В bat файле пользуюсь такой командой
xcopy D:\eMule\Temp\*.met D:\eMule\bak\%DATE%\
работает, но хотелось бы оживить такой вариант:
xcopy D:\eMule\Temp\*.met D:\eMule\bak\%DATE%\%TIME%\
Из-за того, что разделители времени - ":", папка не создается.
Кто подскажет, как быть?
sweet
создано: 25-02-2008 09:58
rjEugen
rem время с точками
set mytime=%time%
set mytime=%mytime:~0,2%.%mytime:~3,2%.%mytime:~6,2%
echo %mytime%
rem время без точек
set mytime=%time%
set mytime=%mytime:~0,2%%mytime:~3,2%%mytime:~6,2%
echo %mytime%

далее подставляй куда нужно переменную %mytime%
Имей ввиду формат времени hh:mm:ss зависит о региональных настроек, для USA будет по-другому,также как и дата.
fokk
создано: 01-04-2008 11:32
Вопрос. очень нужен ответ! как написать скажем... %date:~3,2% - это этот месяц (например 05), так вот... как написать чтобы было не 05 а 04.. тоесть как написать чтобы в мае создавать папки с апрелем, в июне с маем итд..
sweet
создано: 02-04-2008 09:10
fokk А самому подумать и написать влом да? Всё на дядей надеешься?
@echo on
set dd=%date:~3,2%
if "%dd%" == "04" ( set newdd=03)
rem и так далее для 01 по 12
ECHO %newdd%
pause
если на нули в номере месяца наплевать, можно проще
@echo on
set dd=%date:~3,2%
echo %dd%
set /a newdd=dd-1
if "%dd%"=="01" ( set newdd=12)
ECHO %newdd%
pause
Berline
создано: 10-11-2008 14:05
Вопрос про скрипт Solander'а:


Цитата:
:: КОД ОШИБКИ "0", ошибок нет, значит можно удалить старый бэкап.
:done
:: СЧИТАЕМ И УДАЛЯЕМ КАТАЛОГ С БЭКАПОМ, СОЗДАННЫЙ НЕДЕЛЮ НАЗАД
set T_Date=%DATE%
IF %T_DATE:~0,1%==0 (
SET /A T_DAY=%T_DATE:~1,1%) else (
SET /A T_DAY=%T_DATE:~0,2%)

IF %T_DATE:~3,1%==0 (
SET /A T_MONTH=%T_DATE:~4,1%) else (
SET /A T_MONTH=%T_DATE:~3,2%)
SET /A T_YEAR=%T_DATE:~6,4%

:: ТУТ МЕНЯЕМ ЧИСЛО, ЗА СКОЛЬКО ДНЕЙ НАЗАД БУДЕМ ПОКАЗЫВАТЬ ДАТУ (до 28 дней, т.к. скрипт, при "отрицательном" дне всегда делает - 1 месяц)
SET /A T_DAY=%T_DAY%-7

IF %T_DAY% LEQ 0 SET /A T_MONTH=%T_MONTH%-1
IF %T_MONTH%== 0 SET /A T_YEAR=%T_YEAR%-1
IF %T_MONTH%== 0 SET /A T_MONTH=12
if %T_MONTH%==1 Set /A DIM=31
if %T_MONTH%==2 Set /A DIM=28
if %T_MONTH%==3 Set /A DIM=31
if %T_MONTH%==4 Set /A DIM=30
if %T_MONTH%==5 Set /A DIM=31
if %T_MONTH%==6 Set /A DIM=30
if %T_MONTH%==7 Set /A DIM=31
if %T_MONTH%==8 Set /A DIM=31
if %T_MONTH%==9 Set /A DIM=30
if %T_MONTH%==10 Set /A DIM=31
if %T_MONTH%==11 Set /A DIM=30
if %T_MONTH%==12 Set /A DIM=31
IF %T_DAY% LEQ 0 SET /A T_DAY=%T_DAY%+%DIM%
IF %T_DAY% LSS 10 SET T_DAY=0%T_DAY%
IF %T_MONTH% LSS 10 SET T_MONTH=0%T_MONTH%

set FolderName=%T_YEAR%%T_MONTH%%T_DAY%

:: Удалям, собственно...
echo ...Removing old backup files. Please wait...
rd \\10.7.0.2\Backup_1\Рабочие_объекты\%FolderName% /s /q

net send 10.7.0.8 Резервное копирование прошло успешно!

goto exit

:exit


Если папка по дате (к примеру 081110) создаётся каждый день, то всё замечательно, а если только по будням - то получаются ошибки, мол папки нет, и т.д.

Не подскажете, как организовать проверку, чтоб

IF EXIST %FolderName% (
goto ***метка туда, где удаляем папку***
) ELSE (
???
)

проверял наличие папки, если она отсутствует - делал SET /A T_DAY=%T_DAY%-7 (потом -6, -5), и до тех пор, пока не будет найдена существующая папка?

Как я понимаю, необходим цикл, For - Но с ним я пока так и не разобралси...
Solander
создано: 05-12-2008 14:21
Ну... Ошибка... нечего удалять, -7 выпало на выходной... Через день или два будет удален понедельничий бэкап. В чем проблема-то? Новый-то уже создан!
Ап: Стой Стой Стой! Мой скрипт не проверяет папку, которую удаляет! Он ее тихо убивает, есть она там, нет ее там.
Сообщение об ошибке в студию! Какая ось кстати? У меня работает на 2003 Сервере, все сетевые папки подключены, пароли в кеше.
Почитай внимательней скрипт, сообщения о ненайденных файлах когда может быть. Это те, что копируешь. Проверь подключены ли сетевые папки, права на запись. Правильно ли путь ввел, наконец.
Никнейм:


BB-коды, смайлы
Тема на форуме
Опции
 
 
< Можно ли зациклить в bat-файле выполнение команды?   Как запретить повторный запуск приложения >

Сервер NTP

Время, полученное с NTP-сервера. Для просмотра должен быть разрешён Java-script.
Время, полученное с Вашего компьютера. Для просмотра должен быть разрешён Java-script.

Доступ к серверу NTP первого стратума
Подробнее

На форуме

Лента RSS

Mobatime - Автору - Рекламодателю - Веб-мастеру - Контакт - История - Наверх
© Владислав Семёнов aka SavageNoName 2003-2016
При любом использовании материалов ссылка на WindowsFAQ.ru обязательна
Сайту 12 лет, 7 месяцев и 12 дней. Форуму 15 лет, 11 месяцев и 25 дней.