Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создание папки с датой вчерашнего дня

Ответить
Настройки темы
CMD/BAT - [решено] Создание папки с датой вчерашнего дня

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt числа2.txt
(876 байт, 8 просмотров)
Всем привет. Столкнулся с проблемой при формировании даты, а именно числами 8 и 9 в батнике. Насколько понимаю это связано с восьмеричной с/с
Прикрепил батник который создает папки структуры гггг/мм/дд
Но вот в дни где есть цифры 8 или 9 он нехочет работать.
Помогите дописать код чтобы избавиться от этой проблемы. Спасибо

Отправлено: 12:59, 08-01-2018

 

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Еще раз постараюсь объяснить. Согласен, что запутал вас.

С 08:00 до 00:00 - день
С 00:01 до 07:59 - ночь

В 8:00 я создаю папку в разных местах с текущей, сегодняшней датой через батник. Весь день перемещаю в эти папки и забираю из них файлы по маске %d%%m%%y%. После полуночи дата меняется. Соответственно батник уже будет искать файлы и перемещать в папки не с датой например 08012018, а 09012018. Вот для этого я и прошу помочь в решении этого вопроса. Понятно, сто можно два батника написать с текущей датой, и тек дата - 1. Но хотелось бы один
Цитата megaloman:
Цитата Sergey.l:
Хотел бы на вас посмотреть, как вы разъяснялись в незнакомой области. Или вы все знаете? »
Да никто щеки тут не надувает от важности , Вы взялись написать батник, но не знаете как написать - готов помочь. Но надо четкая постановка задачи. Четко мыслим-четко излагаем-правильно делаем. А у Вас, извините, не математика в изложении, а Слово о полку Игореве.

Определитесь, что такое ночь, и что такое день - в математике нет таких понятий.
Допустим с 00:00:00,00 до 07:59:59,99 это ночь.
с 08:00:00,00 до 23:59:59,99 это день.

Отправлено: 16:27, 08-01-2018 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Sergey.l,
Вот определение даты для имени папки в зависимости от того, когда ночь.
Код: Выделить весь код
@Echo Off
cls

Set "NightB=0001"
Set "NightE=0759"

SetLocal EnableDelayedExpansion

Call :StrDate "yyyy" "mm" "dd" "hhmm"

Set /A DeltaDay=0
If 1%NightB% LEQ 1%hhmm% If 1%hhmm% LEQ 1%NightE% Set /A DeltaDay=-1  

Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"

Echo %Date%  %Time%        %yyyy% %mm% %dd% %hhmm%
pause
GoTo :Eof

:StrDate
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
	Set "%~1=%@Tdate:~0,4%"
	Set "%~2=%@Tdate:~4,2%"
	Set "%~3=%@Tdate:~6,2%"
	Set "%~4=%@Tdate:~8,4%"
GoTo :Eof

:FromNow

rem Пересчет даты на заданное кол-во дней
rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyy" "mm" "dd"
rem результат в перемменной %yyyy% %mm% %dd%

 SetLocal
 Set DT=%2
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal &(Set %~3=%yyyy%&Set %~4=%mm:~-2%&Set %~5=%dd:~-2%)
GoTo :Eof
Цитата Sergey.l:
Основная задача по маске например %d%%m%%y% из папки забирать или в нее копировать файлы. »
Всё остальное для меня - лирика.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 08-01-2018 в 18:53.


Отправлено: 18:48, 08-01-2018 | #12


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
mkdir (get-date).AddDays(-1).ToString("dd.MM.yyy")

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 08-01-2018 в 21:02.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:55, 08-01-2018 | #13


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо!

Отправлено: 17:40, 09-01-2018 | #14


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Зачем городить огород с этими батниками,если можно одной строкой из павершел все сделать!

Отправлено: 11:48, 10-01-2018 | #15


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Wirehead, например, для того, чтобы не разворачивать сотню остальных строк из пакетного файла в тысячу строк на PowerShell.

Отправлено: 12:35, 10-01-2018 | #16


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Да уж лучше потратить несколько недель и портировать всё на Powershell, чем постоянно на грабли наступать в батниках, пытаясь там реализовать через разные извращения уже встроенные в пауэршелл готовые командлеты и модули. Будет наоборот - сто строк батника будут десятью строками в пауэршелле. Нужно сказать, что большинство, если не все, команды старой командной строки являются алиасами в Powershell, так что, возможно, ничего особо и переделывать-то не придётся.
К тому же, появится новое полезное умение.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:16, 10-01-2018 | #17


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


DJ Mogarych, в данном случае не могу с Вами согласиться, коллега: какой смысл тратить несколько дней или недель на то, что уже и так работает?!

Отправлено: 23:38, 10-01-2018 | #18


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Чтобы держаться прогресса, потому что в какой-то момент окажется, что то, что работало, работать перестало, а миграция на новые решения невозможна, потому что пропущено слишком много итераций, и прямой апгрейд не поддерживается.

Положим, к этому случаю это имеет непрямое отношение, но несколько раз видел совершенно исключительные случаи, типа сеть на компах под Windows NT в 2013 году, где задача стояла установить антивирус Касперского.

Ну и, в конце концов, интересно же изучать что-то новое и более эффективное

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:16, 11-01-2018 | #19


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Iska, DJ Mogarych, от вопроса ушли, коллеги для поддержания офтопа:
Iska, иногда стоит потратить. Тот же вопрос с определением даты для cmd/bat - больной весьма, и решать его раз и насовсем никто не хочет, у меня в одном батнике вообще та еще хрень работает - cmd запускает posh, тот дергает несколько значений (в т.ч. и дату с перемоткой на неделю назад) и складывает их в файл, откуда эти значения забираются обратно cmd. Писано еще года три назад, костыль, конечно, но костыль прям таки титановый, не ломается, зараза! А вот то что этот костыль заменил - ломалось, по крайней мере 1-2 раза в месяц приходилось искать куда подевалось то, что должно было лежать вот в этом конкретном "здесь", а не в том "здесь", которое "там".
DJ Mogarych, большей частью согласен, однако есть одно "но": Iska говорит в первую очередь о скриптовых языках, в них изменения если и происходят, то не столь агрессивные как в приведенном примере (обычно).

Отправлено: 15:04, 11-01-2018 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создание папки с датой вчерашнего дня

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Создание папки с датой в названии и копирование туда файлов Chiz3000 Скриптовые языки администрирования Windows 2 30-07-2013 10:09
Компанию Samsung со вчерашнего дня возглавляют три человека OSZone News Новости информационных технологий 0 16-03-2013 10:30
CMD/BAT - Скорректируйте, пожалуйста, создание папки с датой n e w b i e Скриптовые языки администрирования Windows 1 03-12-2011 03:55
Интерфейс - как поменять местами отображение дня недели с датой ? geepnozeex Microsoft Windows 2000/XP 1 13-04-2011 01:26
Создаем конфигурацию вчерашнего дня Help! yuriivan Выбор отдельных компонентов компьютера и конфигурации в целом 23 13-03-2007 15:17




 
Переход