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

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

Ответить
Настройки темы
CMD/BAT - CMD/BAT запись в текстоваый файл предыдущей даты

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


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

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


Здравствуйте, форумчане!
В CMD/BAT скрипте, создающем текстовый файл, пытаюсь решить задачу, нужно в одну строку дважды вписать предыдущую дату в формате дд.мм.гггг через ;
С текущей датой всё легко и просто, но вот с предыдущей, в интернете много способов, но они для единичной цели, как её повторить через точку с запятой, я так и не смог себя победить((((

Отправлено: 10:25, 15-07-2021

 

Аватара для Elven

Ветеран


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

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


cmd весьма неудобен в плане получения даты (варианты есть, но они весьма громоздкие и не очень надежные), лучше использовать powershell. если невозможно полностью отказаться от cmd - то хотя бы вставку на пошике.

Код: Выделить весь код
$dates = (Get-Date -Format dd.MM.yyyy) + ";" + ((Get-Date).AddDays(-1).ToString("dd.MM.yyyy"))
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:39, 15-07-2021 | #2



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

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


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


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

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


Цитата Elven:
cmd весьма неудобен в плане получения даты (варианты есть, но они весьма громоздкие и не очень надежные), лучше использовать powershell. если невозможно полностью отказаться от cmd - то хотя бы вставку на пошике.
Код: Выделить весь код
$dates = (Get-Date -Format dd.MM.yyyy) + ";" + ((Get-Date).AddDays(-1).ToString("dd.MM.yyyy")) »
Я бы рад, но тогда придется скрипт переделывать.
В ps я вообще никак((((
Помогите, пожалуйста, шапку сделать.
Т.е. формируется текстовый файл (пусть tmp_1.txt) в котором идет строка первая (отвечает за загрузку) $&IMPORTDATERATING@
Что бы шапка выглядила так, (т.е. саму головную часть , а остальное я тогда поставлю на дозапись в своём скрипте):
$&IMPORTDATERATING@
14.07.2021;14.07.2021;

Отправлено: 12:48, 15-07-2021 | #3


Ветеран


Contributor


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

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


Technik_spat,
Цитата Elven:
cmd весьма неудобен в плане получения даты (варианты есть, но они весьма громоздкие »
Код: Выделить весь код
@Echo Off
	Call :FromDate -1 %Date% "Date1"
	>"D:\_outfile.txt" (
		Echo $^&IMPORTDATERATING@
		Echo %Date1%;%Date1%;
	)
Exit /B

:FromDate

rem Пересчет даты на заданное кол-во дней
rem В первом аргументе +- дни
rem Во втором аргументе дата в формате dd.mm.yyyy
rem В третем аргументе имя переменной в кавычках где получим новую дату в формате dd.mm.yyyy 

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "MyDate"
rem результат в перемменной %MyDate%

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=%dd:~-2%.%mm:~-2%.%yyyy%"
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:49, 15-07-2021 | #4


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


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

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


Цитата megaloman:
megaloman»
Огромное СПАСИБО!!!!
Получилось всё))))

Отправлено: 13:18, 15-07-2021 | #5


Аватара для Elven

Ветеран


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

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


в переменную в cmd значение полученное в powershell можно всандалить приблизительно так (не проверял):
Код: Выделить весь код
for /f "delims=" %%a in ('powershell ^(Get-Date -Format dd.MM.yyyy^) + ";" + ^(^(Get-Date^).AddDays^(-1^).ToString^("dd.MM.yyyy"^)^)^|Out-String') do set dates=%%a
echo %dates%
Ну или вариант предложенный megaloman, как я и писал ранее - довольно громоздко, хотя этот вариант надежен весьма, даже что-то придумать не могу как его сломать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:35, 15-07-2021 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)? Shaytan Программное обеспечение Windows 36 21-12-2021 14:57
Разное - Bat файл и cmd воюют lavletec Microsoft Windows 7 9 28-12-2016 16:07
CMD/BAT - [решено] Запись в файл hosts с помощью bat-файла SibAgent Скриптовые языки администрирования Windows 20 29-07-2015 22:12
CMD/BAT - CMD/BAT - Прошу подсказать, как сделать, чтобы в файл выводились логи пингов. Vasya- Скриптовые языки администрирования Windows 3 26-03-2014 16:58
CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10? ANR Скриптовые языки администрирования Windows 9 26-03-2013 10:02




 
Переход