Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

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


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

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


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

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

 

Ветеран


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

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


На WSH:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim dtYesterday
Dim strYear, strMonth, strDay


dtYesterday = DateAdd("d", -1, Now())

strYear  =              CStr(Year( dtYesterday))
strMonth = Right("00" & CStr(Month(dtYesterday)), 2)
strDay   = Right("00" & CStr(Day(  dtYesterday)), 2)

CreateFolderEx Join(Array("d:", strYear, strMonth, strDay), "\")

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub CreateFolderEx(strPath)
	With WScript.CreateObject("Scripting.FileSystemObject")
		If Not .FolderExists(strPath) Then
			CreateFolderEx .GetParentFolderName(strPath)
			.CreateFolder strPath
		End If
	End With
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

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



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

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


Ветеран


Contributor


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

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


Sergey.l,
Если не изобретать велосипед, то вот CMD
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

Call :FromNow -1 %Date% "yyyy" "mm" "dd"

Echo %Date%  %DeltaDay%  %yyyy% %mm% %dd%
Echo MD Disk:\Folder\%yyyy%\%mm%\%dd%
pause
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
ИМХО, наверное это и не нужно. Папки создаются, чтобы туда поместить файлы прошедших дней. Не проще ли брать дату, например, изменения файла, и, по мере надобности, создавать папки. Тогда батник, построенный по такому принципу, можно запускать хоть раз в несколько дней/недель/месяцев/лет, и при этом рассортировать файлы по нужным папкам, а не в папку вчерашнего дня.

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


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


Отправлено: 14:41, 08-01-2018 | #3


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


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

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


Вложения
Тип файла: txt числа3.txt
(667 байт, 9 просмотров)

Спасибо, большое! Нашел батник. (См. вложение)
Подскажите, как сделать условие так чтобы при запуске батника до 00:00 формировалась текущая дата, а после вчерашнее число. Работаю сутки/двое. Днем создаю рабочие папки с тек. датой, а в конце дежурства, т.е. на след день батником забираю с созданных вчера папок файлы.
Буду премного обязан за помощь!

Отправлено: 15:07, 08-01-2018 | #4


Ветеран


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

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


megaloman, как обычно, мы ничего не знаем — зачем сие нужно .

Цитата Sergey.l:
до 00:00 формировалась текущая дата, а после вчерашнее число. »
Sergey.l, осмыслите сами всю глубину и невозможность решения в рамках некорректно озвученного Вами условия.

Отправлено: 15:07, 08-01-2018 | #5


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


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

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


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

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


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


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

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


Ничего смешного. Есть папка с текущей датой, 08.01.2018. Надо батником перемещать туда файлы в течении суток, после полуночи уже 9 число и батник должен следуя условию перемещать в папку не в 09.01.2018, а в 08.01.2018
Цитата Iska:
megaloman, как обычно, мы ничего не знаем — зачем сие нужно .

Цитата Sergey.l:
до 00:00 формировалась текущая дата, а после вчерашнее число. »
Sergey.l, осмыслите сами всю глубину и невозможность решения в рамках некорректно озвученного Вами условия.
Извиняюсь, если ввёл в заблуждение. Создание папки это пример, т.е. одно из действий. Для меня важно само формирование даты и использование ее в разных командах, md, copy, move и т.д.
Цитата megaloman:
Sergey.l,
Цитата Sergey.l:
чтобы при запуске батника до 00:00 формировалась текущая дата »
Не догоняю! Любое время, например 00:01 13:25 23:49 до 00:00 час:мин следующих суток

Sergey.l,
Цитата Sergey.l:
Днем создаю рабочие папки с тек. датой, а в конце дежурства, т.е. на след день батником забираю с созданных вчера папок файлы. »
То есть, папки с нужной датой уже существуют. Что мешает их переместить или скопировать в другое место, не выдумывая заново имени с вчерашней датой. Вам надо имеющуюся папку с именем вчерашнего дня переместить или скопировать в папку с таким же именем в другое место.

Последний раз редактировалось Sergey.l, 08-01-2018 в 15:26.


Отправлено: 15:21, 08-01-2018 | #7


Ветеран


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

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


Sergey.l, Вы так и не поняли, в чём проблема.

megaloman, желаю успеха в развитии навыка телепатии и заранее сочувствую.

Отправлено: 15:29, 08-01-2018 | #8


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


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

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


Основная задача по маске например %d%%m%%y% из папки забирать или в нее копировать файлы. Неудобство в том что днем нужна тек дата а ночью вчерашняя. Мне не сложно было это делать через тотал коммандер, но вы бы видели сколько каталогов и файлов с которыми приходиться работать. Папка с числом наход в 15-20 каталогах и с разных мест в эти папки надо перемещать файллы, а в конце смены забрать обработанные.

Я не совсем разбираюсь в этом. Хотел бы на вас посмотреть, как вы разъяснялись в незнакомой области. Или вы все знаете?)))
Цитата Iska:
Sergey.l, Вы так и не поняли, в чём проблема.

megaloman, желаю успеха в развитии навыка телепатии и заранее сочувствую.

Отправлено: 15:37, 08-01-2018 | #9


Ветеран


Contributor


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

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


Цитата Sergey.l:
Хотел бы на вас посмотреть, как вы разъяснялись в незнакомой области. Или вы все знаете? »
Да никто щеки тут не надувает от важности , Вы взялись написать батник, но не знаете как написать - готов помочь. Но надо четкая постановка задачи. Четко мыслим-четко излагаем-правильно делаем. А у Вас, извините, не математика в изложении, а Слово о полку Игореве.

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

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

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

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



Компьютерный форум 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




 
Переход