|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] текущая дата минус один день. |
|
CMD/BAT - [решено] текущая дата минус один день.
|
![]() Старожил Сообщения: 194 |
Доброго дня всем.
возникла небольшая загвоздка, нужно получить в переменную дату за минусом одного дня типо такого echo %date% получим 31.05.2012, а мне нужно минус один день т.е. 30.05.2012 и вставить все это в путь \\server\30.05.2012 Спасибо |
|
Отправлено: 11:08, 31-05-2012 |
Ветеран Сообщения: 1758
|
Цитата CyberMuesli:
> for /l %i in (2012,-4,1900) do @echo %i 2012 2008 2004 2000 1996 1992 1988 1984 1980 1976 1972 1968 1964 1960 1956 1952 1948 1944 1940 1936 1932 1928 1924 1920 1916 1912 1908 1904 1900 for ( $i=2012; $i -ge 0; $i-- ) { if ( $($i%4) -eq 0 ) { if ( !([datetime]::isleapyear($i)) ) { $i } } } Цитата:
|
||
Отправлено: 20:22, 02-07-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
------- Отправлено: 20:23, 02-07-2012 | #12 |
Ветеран Сообщения: 1758
|
CyberMuesli,
Астрономия. Но для бекапов сойдет и x%y |
Отправлено: 20:38, 02-07-2012 | #13 |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
------- Отправлено: 14:22, 03-07-2012 | #14 |
![]() Старожил Сообщения: 194
|
Профиль | Отправить PM | Цитировать CyberMuesli, да и такое бывает
|
Отправлено: 13:22, 19-07-2012 | #15 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Нужно создать переменные некоторого диапазона прошедших дней. Столкнулся с проблемой раскрытия в "tokens=!tok!" в цикле. Есть идеи?
@echo off setlocal enabledelayedexpansion for /l %%a in (5,1,9) do ( set d=%date:~0,2% set m=%date:~3,2% set y=%date:~6,4% if "!d:~0,1!"=="0" set d=!d:~1! if "!m:~0,1!"=="0" set m=!m:~1! set /a feb=y%%4 if "!feb!"=="0" (set feb=29) else (set feb=28) set /a tok=m-1 if "!tok!"=="0" set tok=12 for /f "tokens=!tok!" %%i in ("31 !feb! 31 30 31 30 31 31 30 31 30 31") do ( set /a d-=%%a if !d!==0 ( set d=%%i set m=%tok% if !m!==12 set /a y-=1 ) ) set d=0!d! set m=0!m! set yesterday=!d:~-2!.!m:~-2!.!y! echo !yesterday!_%%a ) pause |
Отправлено: 08:20, 27-11-2014 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:03, 27-11-2014 | #17 |
Ветеран Сообщения: 1758
|
sov44, Вынести за пределы цикла?
@echo off setlocal enabledelayedexpansion for /l %%a in (5,1,9) do ( set d=%date:~0,2% set m=%date:~3,2% set y=%date:~6,4% if "!d:~0,1!"=="0" set d=!d:~1! if "!m:~0,1!"=="0" set m=!m:~1! set /a feb=y%%4 if "!feb!"=="0" (set feb=29) else (set feb=28) set /a tok=m-1 if "!tok!"=="0" set tok=12 call:1 %%a set d=0!d! set m=0!m! set yesterday=!d:~-2!.!m:~-2!.!y! echo !yesterday!_%%a ) pause goto:eof :1 for /f "tokens=%tok%" %%i in ("31 !feb! 31 30 31 30 31 31 30 31 30 31") do ( set /a d-=%1 if !d!==0 ( set d=%%i set m=%tok% if !m!==12 set /a y-=1 ) ) |
Отправлено: 09:03, 27-11-2014 | #18 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Нужно было вывести даты с шагом в 7 дней. На самом деле можно вычитать любое количество дней из даты и задавать любое количество шагов:
Так что не только текущая дата минус одна неделя. @echo off setlocal enabledelayedexpansion set date=08.03.2021 set n=7 set m=20 echo. echo Start: %date% echo Day: -%n% echo Step: %m% echo. for /l %%i in (1,1,%m%) do ( call :date ) pause > nul exit :date set d=%date:~0,2% set m=%date:~3,2% set y=%date:~6,4% if %d:~0,1%==0 set d=%d:~1% if %m:~0,1%==0 set m=%m:~1% set /a feb=y%%4 if %feb%==0 (set feb=29) else (set feb=28) set /a tok=m-1 if %tok%==0 set tok=12 for /f "tokens=%tok%" %%i in ("31 %feb% 31 30 31 30 31 31 30 31 30 31") do ( set /a d-=7 if !d! LSS 0 ( set /a d=%%i!d! set m=%tok% if !m!==12 set /a y-=1 ) if !d! EQU 0 ( set d=%%i set m=%tok% if !m!==12 set /a y-=1 ) ) set d=0%d% set m=0%m% set date=%d:~-2%.%m:~-2%.%y% echo %date% exit /b |
Отправлено: 18:14, 29-09-2021 | #19 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 19:19, 29-09-2021 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Текущая дата в пути к файлу | AlexVong | Скриптовые языки администрирования Windows | 3 | 18-11-2011 00:43 | |
Обновленные Apple MacBook Pro: минус SSD, плюс Thunderbolt | OSZone News | Новости железа | 0 | 24-02-2011 20:30 | |
Интернет празднует еще один день рождения | OSZone News | Новости информационных технологий | 0 | 01-11-2009 16:30 | |
"День 7" - на носу: Windows 7 осталось ждать один день | OSZone News | Новости и события Microsoft | 0 | 21-10-2009 12:30 | |
Вопрос по лицензированию w2k3 (просрочил один день) | mark4ever | Microsoft Windows NT/2000/2003 | 6 | 31-05-2006 08:50 |
|