CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Ответить
Аватара пользователя
Prostda

CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

Здравствуйте!

Помогите сделать bat ник чтобы он создавал папки с именами месяцев, а в них папки по датам всех рабочих дней.
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

Prostda, за какой период?... какие дни рабочие/выходные?
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение amel27 »

amel27, На календарный год. Суббота и воскресенье выходные.
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

на базе скрипта из
этого
топика


читать дальше »




Код:

Код: Выделить всё

@echo off
set/a "yyyy=2010,mm=12,dd=31"
:LOOP
Call:StepWorkDays +1
if %yyyy% EQU 2011 (md "%yyyy%\%mm%\%dd%") Else GoTo:EOF
GoTo:LOOP
:StepWorkDays  [%workdays%]
::-------------------------
 if "%dd%"=="" set "yyyy=%DATE:~-4%"& set "mm=%DATE:~3,2%"& set "dd=%DATE:~,2%"
 SetLocal& set/a "$m=100%mm%%%100,$d=100%dd%%%100,$y=10000%yyyy%%%10000,$i=%~1+0"
 set $z=0& if %$i% gtr 0 (set $z=+1) else if %$i% lss 0 set/a "$z-=1,$i=-($i)"
 set/a JD=$d-32075+1461*($y+4800+($m-14)/12)/4+367*($m-2-($m-14)/12*12)/12-3*(($y+4900+($m-14)/12)/100)/4
:StepWorkDays_LOOP
 set/a DW=%JD%%%7
 if %$z% equ 0 if %DW% gtr 4 (Exit/B 1) Else Exit/B 0
 if %DW% gtr 4 set/a "JD=JD%$z%"& GoTo:StepWorkDays_LOOP
 if %$i% neq 0 set/a "JD=JD%$z%,$i-=1"& GoTo:StepWorkDays_LOOP
 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 $m=100+J,$d=100+K,$y=10000+I
 EndLocal& set/a "dw=1+(%JD%)%%7,yyyy=%$y:~-4%"& set "mm=%$m:~-2%"& set "dd=%$d:~-2%"
Exit/B 0
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

amel27

Благодарю.

А что изменить чтоб на 2012 год?
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

Цитата Prostda:



А что изменить чтоб на 2012 год?
CMD/BAT - [решено] Создание папок по датам всех рабочих дней






Код:

Код: Выделить всё

@echo off
set/a "yyyy=2011,mm=12,dd=31"
:LOOP
Call:StepWorkDays +1
if %yyyy% EQU 2012 (md "%yyyy%\%mm%\%dd%") Else GoTo:EOF
GoTo:LOOP
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

Это я менял. Дни остаются те же что и на 2011 год
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

Prostda, всё-таки логичней сравнивать с календарём... к примеру, 01\30 в 2011\ отсутствует (воскресенье), а в 2012\ наличествует (понедельник)
Аватара пользователя
Prostda

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение Prostda »

amel27, прошу прощения. Создаётся всё верно. Кроме одного. В 2012 году первая папка 03, а должно начинаться с 02. Но это не принципиально. Спасибо за помощь
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Создание папок по датам всех рабочих дней

Сообщение amel27 »

Цитата Prostda:



В 2012 году первая папка 03, а должно начинаться с 02.
CMD/BAT - [решено] Создание папок по датам всех рабочих дней




ну да, потому что 31.12.2011 выходной, надо было выбрать стартовым последний рабочий день 2011-го года, т.е. 30.12.2011
Ответить

Вернуться в «Скриптовые языки администрирования Windows»