|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Изменение даты (месяца) в команде bat-файла |
|
|
CMD/BAT - Изменение даты (месяца) в команде bat-файла
|
Новый участник Сообщения: 19 |
Профиль | Отправить PM | Цитировать Через командную строку можно получить дату в формате YYYY.MM:
%date:~-4%.%date:~3,2% Задача сделать так, чтобы дата была на один месяц меньше, т.е. не 2023.01, а 2022.12. По гуглу нашел только откровенно сложные варианты, возможно есть более-менее простые? |
|
Отправлено: 14:44, 02-01-2023 |
Ветеран Сообщения: 4539
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:40, 02-01-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6619
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 16:05, 02-01-2023 | #3 |
Ветеран Сообщения: 4539
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
Отправлено: 17:10, 02-01-2023 | #4 |
fascinating rhythm Сообщения: 6619
|
Профиль | Отправить PM | Цитировать А я и гляжу - а что так сложно-то, может, какой подвох? Нет, обо всём уже подумали.
|
|
------- Отправлено: 17:31, 02-01-2023 | #5 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать прошу прощения, не очень знаю как использовать powershell, и весь остальной функционал реализован на bat, поэтому нужно через bat
|
Отправлено: 17:54, 02-01-2023 | #6 |
Ветеран Сообщения: 4539
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:49, 02-01-2023 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 19:25, 02-01-2023 | #8 |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать можно посоревноваться ...
@echo off SETLOCAL set DAYS=%1 if "%DAYS%" equ "" set DAYS=10 call :CALL_JAVASCRIPT %DAYS% set NEW_DATE=%VALUE% echo NEW_DATE=%NEW_DATE% goto :EOF :CALL_JAVASCRIPT REM This script illustrates javascript functions. REM NOTE: limited size set "SCRIPT=javascript:{" set "SCRIPT=%SCRIPT% var o=new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1);" REM https://stackoverflow.com/questions/563406/how-to-add-days-to-date set "SCRIPT=%SCRIPT%Date.prototype.addDays=function(x) {" set "SCRIPT=%SCRIPT%var d=new Date(this.valueOf());" set "SCRIPT=%SCRIPT%d.setDate(d.getDate()+x);return d};" REM https://stackoverflow.com/questions/23593052/format-javascript-date-as-yyyy-mm-dd set "SCRIPT=%SCRIPT%var d=new Date(Date.now());" set "SCRIPT=%SCRIPT%var n=%~1;" REM Locale specific REM set "SCRIPT=%SCRIPT%o.Write(d.addDays(n).toLocaleString());" set "SCRIPT=%SCRIPT%function p(n){var t='0'+ n.toString();return t.substring(t.length-2)}" set "SCRIPT=%SCRIPT%function f(d){return [d.getFullYear(),p(d.getMonth()+1),p(d.getDate())].join('.')}" set "SCRIPT=%SCRIPT%o.Write(f(d.addDays(n)));" set "SCRIPT=%SCRIPT%close();}" REM https://stackoverflow.com/questions/23593052/format-javascript-date-as-yyyy-mm-dd if /i "%DEBUG%"=="true" echo mshta.exe "%SCRIPT%" if /i "%DEBUG%"=="true" for /F "delims=" %%_ in ('mshta.exe "%SCRIPT%" 1 ^| more') do echo %%_ for /F "tokens=*" %%_ in ('mshta.exe "%SCRIPT%" 1 ^| more') do set VALUE=%%_ ENDLOCAL exit /b |
Отправлено: 04:58, 03-01-2023 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Serguei Kouzmine,
Цитата Serguei Kouzmine:
Чистый CMD
@Echo Off cls Set "DeltaDay=362" Call :FromDate %DeltaDay% %Date% "yyyymmdd" Echo %Date% %DeltaDay% %yyyymmdd% pause GoTo :Eof :FromDate rem Пересчет даты на заданное кол-во дней rem В первом аргументе +- дни rem Во втором аргументе дата в формате dd.mm.yyyy rem В третем аргументе имя переменной в кавычках где получим новую дату в формате yyyymmdd rem Заимствовано http://forum.oszone.net/thread-186889.html rem вызов Call :FromNow %DeltaDay% %Date% "yyyymmdd" rem результат в перемменной %yyyymmdd% 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%%mm:~-2%%dd:~-2%" GoTo :Eof CMD+JS
@set @E=1; /* @Echo Off cls Set /A N=362 cscript //NoLogo /E:jscript "%~dpnx0" 362 Set /A NewDate=%ErrorLevel% Echo Сегодня %Date% плюс %N% = %NewDate% pause Exit /B */ var oArg = WScript.Arguments; var Dt=new Date(); //Текущая дата var DtMinus=new Date(Dt.getTime()+oArg(0)*24*60*60*1000); //Дата, отстоящая от текущей на указ кол-во дней var Yea=DtMinus.getFullYear(), Mon=DtMinus.getMonth()+1, Dat=DtMinus.getDate(); var StrMinus=""+Yea; if (Mon>9) StrMinus+= Mon; else StrMinus+="0"+Mon; if (Dat>9) StrMinus+= Dat; else StrMinus+="0"+Dat; WScript.Quit(StrMinus); |
|
------- Отправлено: 14:08, 03-01-2023 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Изменение даты в названии файла/папки | Sta1917 | Скриптовые языки администрирования Windows | 12 | 07-04-2022 21:18 | |
CMD/BAT - Изменение даты и времени создания файла | timasadovykh@vk | Скриптовые языки администрирования Windows | 7 | 30-01-2021 21:37 | |
VBS/WSH/JS - изменение даты создания файла на минус Х дней | nixdorf13 | Скриптовые языки администрирования Windows | 2 | 08-06-2015 14:26 | |
CMD/BAT - Переменные в команде задания даты | osob1 | Скриптовые языки администрирования Windows | 1 | 06-05-2014 23:56 | |
CMD/BAT - Проверка даты стандартными средствами bat файла | chieffka | Скриптовые языки администрирования Windows | 3 | 29-02-2008 11:43 |
|