|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование папок с текущей датой +1 день в названии (кроме выходных) |
|
CMD/BAT - [решено] Копирование папок с текущей датой +1 день в названии (кроме выходных)
|
Пользователь Сообщения: 47 |
Профиль | Отправить PM | Цитировать Помогите, не могу разобраться, я работаю на телевидении, мне надо чтобы каждый день создавалась папка на завтра, с пропуском выходных дней, но не просто создавалась, а копировалось всё из сегодняшней, так сказать:
Таков формат названия папки, в ней тоже есть папки и файлы формата %день%_%месяц%_Фамилия. Надо чтоб они тоже переименовывались в %день+1%_%месяц%_Фамилия |
|
Отправлено: 17:12, 25-02-2015 |
Ветеран Сообщения: 545
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Сантей:
я в свое время специальный календарь писал типа планинга, чтобы шедулеры разные не жестко к дням недели привязывались,а к тому что я задам, Ибо праздников в стране дофига. |
|
------- Отправлено: 16:34, 26-02-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
(*.*) Сообщения: 36514
|
Профиль | Сайт | Отправить PM | Цитировать Пропуск выходных дней (СБ и ВС) легко организует планировщик (о праздничных он не знает, конечно).
|
------- Отправлено: 17:53, 26-02-2015 | #3 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Цитата Опиум:
@echo off SetLocal EnableExtensions :: Добавление к дате +1, +3 дня call :fromDate "%date%" +0 ddmmyyyy1 wd1 call :fromDate "%date%" +1 ddmmyyyy2 wd2 call :fromDate "%date%" +3 ddmmyyyy3 wd3 :: Проверка на день недели и копирование папки if "%wd1%" neq "5" if exist "%ddmmyyyy1:~-2,2%_%ddmmyyyy1:~-5,2%_News" xcopy /s /e /q /i "%ddmmyyyy1:~-2,2%_%ddmmyyyy1:~-5,2%_News" "%ddmmyyyy2:~-2,2%_%ddmmyyyy2:~-5,2%_News" if "%wd1%"=="5" if exist "%ddmmyyyy1:~-2,2%_%ddmmyyyy1:~-5,2%_News" xcopy /s /e /q /i "%ddmmyyyy1:~-2,2%_%ddmmyyyy1:~-5,2%_News" "%ddmmyyyy3:~-2,2%_%ddmmyyyy3:~-5,2%_News" pause>nul & goto :eof :FromDate [Дата] [действие (+-) Число дней] [Переменная для хранения результата] :: Функция работы с датами setLocal set "now=%~1" set /a yyyy=%now:~-4% set /a mm=1%now:~3,2%-100 set /a dd=1%now:~,2%-100 set /a JD=%~2+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, DW=(JD+1)%%7 EndLocal& set "%~3=%yyyy%.%mm:~-2%.%dd:~-2%" & if %DW%==0 (set "%~4=7") else (set "%~4=%DW%") exit /b |
|
Отправлено: 13:09, 02-03-2015 | #4 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Сантей, а не проще ли использовать такой код:
@echo off for /f "tokens=1,2,4,5 delims=.-/" %%i in (' mshta vbscript:Execute("Set x=CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1):If Weekday(Now,vbMonday)<>5 Then:x.Write(Date&""-""&DateAdd(""D"",1,Date)):Else x.Write(Date&"".""&DateAdd(""D"",3,Date)):End If:Close()"^) ') do ( for /f %%m in ('dir/a/b %%i_%%j_News') do ( for /f "tokens=1,2* delims=_" %%n in ("%%~nxm") do ( if "%%n_%%o" equ "%%i_%%j" ( echo f| xcopy/i/h/k/y "%%i_%%j_News\%%m" "%%k_%%l_News\%%k_%%l_%%p">nul ) else ( echo f| xcopy/i/h/k/y "%%i_%%j_News\%%m" "%%k_%%l_News\%%m">nul ) ) ) ) exit/b ? Цитата Сантей:
Данный код это также делает. |
||
Отправлено: 21:37, 02-03-2015 | #5 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Цитата Georgio:
%день%_%месяц%_News -%день%_%месяц%_Фамилия----->%день%_%месяц%_Фамилия.file -%день%_%месяц%_Фамилия----->%день%_%месяц%_Фамилия.file -%день%_%месяц%_Фамилия.file Еще куда можно путь к папке подставить, чтоб не хранить cmd рядом? |
|
Последний раз редактировалось Сантей, 03-03-2015 в 13:33. Отправлено: 13:06, 03-03-2015 | #6 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Сантей:
Сантей, тогда всё ещё проще (так как уже не нужно бояться, что код переименует что-то лишнее): @echo off for /f "tokens=1,2,4,5 delims=.-/" %%i in (' mshta vbscript:Execute("Set x=CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1):If Weekday(Now,vbMonday)<>5 Then:x.Write(Date&""-""&DateAdd(""D"",1,Date)):Else x.Write(Date&"".""&DateAdd(""D"",3,Date)):End If:Close()"^) ') do ( for /f %%m in ('dir/a-d/b/s %%i_%%j_News') do ( set x=%%m echo f|>nul cmd/v/c xcopy/h/k/y "%%m" "!x:\%%i_%%j_=\%%k_%%l_!" ) ) exit/b . |
|
Отправлено: 13:48, 03-03-2015 | #7 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Georgio, а как лучше добавить проверку на существование завтрашней папки? вдруг комп перезагружаться будет, а скрипт в автозагрузке
|
Отправлено: 16:19, 03-03-2015 | #8 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Сантей:
@echo off for /f "tokens=1,2,4,5 delims=.-/" %%i in (' mshta vbscript:Execute("Set x=CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1):If Weekday(Now,vbMonday)<>5 Then:x.Write(Date&""-""&DateAdd(""D"",1,Date)):Else x.Write(Date&"".""&DateAdd(""D"",3,Date)):End If:Close()"^) ') do ( for /f %%m in ('if not exist "%%k_%%l_News" dir/a-d/b/s "%%i_%%j_News"') do ( set x=%%m echo f|>nul cmd/v/c xcopy/h/k/y "%%m" "!x:\%%i_%%j_=\%%k_%%l_!" ) ) exit/b Цитата Сантей:
@echo off :: Директория, в которой находятся папки "*_*_News": set "dir=C:\Test" for /f "tokens=1,2,4,5 delims=.-/" %%i in (' mshta vbscript:Execute("Set x=CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1):If Weekday(Now,vbMonday)<>5 Then:x.Write(Date&""-""&DateAdd(""D"",1,Date)):Else x.Write(Date&"".""&DateAdd(""D"",3,Date)):End If:Close()"^) ') do ( for /f %%m in ('if not exist "%dir%\%%k_%%l_News" dir/a-d/b/s "%dir%\%%i_%%j_News"') do ( set x=%%m echo f|>nul cmd/v/c xcopy/h/k/y "%%m" "!x:\%%i_%%j_=\%%k_%%l_!" ) ) exit/b |
||
Отправлено: 23:26, 03-03-2015 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - архивирование файла с текущей датой | mcintosh55 | Скриптовые языки администрирования Windows | 1 | 22-12-2014 20:09 | |
Любой язык - [решено] Создание папки с датой в названии и копирование туда файлов | Chiz3000 | Скриптовые языки администрирования Windows | 2 | 30-07-2013 10:09 | |
CMD/BAT - Сранение даты из файла с текущей датой | InVariable | Скриптовые языки администрирования Windows | 0 | 07-02-2012 11:53 | |
CMD/BAT - [решено] Копирование с флешки в папку на компьютере файлов с текущей датой | bazik83 | Скриптовые языки администрирования Windows | 6 | 19-05-2010 10:17 | |
CMD/BAT - [решено] Проверить наличие файла с текущей датой. | OlegStarov | Скриптовые языки администрирования Windows | 4 | 21-04-2009 12:11 |
|