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

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

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

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


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

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


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

Отправлено: 11:03, 23-11-2010

 

Googler


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

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


Prostda, за какой период?... какие дни рабочие/выходные?

Отправлено: 05:20, 24-11-2010 | #2



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

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


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


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

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


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

Последний раз редактировалось Prostda, 24-11-2010 в 09:33.


Отправлено: 08:47, 24-11-2010 | #3


Googler


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

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


на базе скрипта из этого топика
читать дальше »
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:01, 24-11-2010 | #4


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


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

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


amel27
Благодарю.
А что изменить чтоб на 2012 год?

Отправлено: 13:42, 24-11-2010 | #5


Googler


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

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


Цитата Prostda:
А что изменить чтоб на 2012 год? »
Код: Выделить весь код
@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

Отправлено: 13:59, 24-11-2010 | #6


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


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

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


Это я менял. Дни остаются те же что и на 2011 год

Отправлено: 14:15, 24-11-2010 | #7


Googler


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

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


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

Отправлено: 12:51, 25-11-2010 | #8


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


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

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


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

Отправлено: 14:52, 25-11-2010 | #9


Googler


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

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


Цитата Prostda:
В 2012 году первая папка 03, а должно начинаться с 02. »
ну да, потому что 31.12.2011 выходной, надо было выбрать стартовым последний рабочий день 2011-го года, т.е. 30.12.2011
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:02, 26-11-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Создание папок исходя из имени хоста.Создание ярлыков. ufunf Скриптовые языки администрирования Windows 1 18-02-2010 13:59
CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках volk1234 Скриптовые языки администрирования Windows 15 13-11-2009 02:13
Как задать на всех рабочих станциях домена определённый каталог переменных сред? Alexir Microsoft Windows NT/2000/2003 5 06-04-2007 14:29
Создание рабочих групп в домене на win2000 Dmitriy_Demon Microsoft Windows NT/2000/2003 5 02-05-2006 14:00
Обновление файла hosts на всех рабочих станциях Dennis Microsoft Windows NT/2000/2003 6 07-02-2003 09:47




 
Переход