Technik_spat |
15-07-2021 10:25 2962174 |
CMD/BAT запись в текстоваый файл предыдущей даты
Здравствуйте, форумчане!
В CMD/BAT скрипте, создающем текстовый файл, пытаюсь решить задачу, нужно в одну строку дважды вписать предыдущую дату в формате дд.мм.гггг через ;
С текущей датой всё легко и просто, но вот с предыдущей, в интернете много способов, но они для единичной цели, как её повторить через точку с запятой, я так и не смог себя победить((((
|
cmd весьма неудобен в плане получения даты (варианты есть, но они весьма громоздкие и не очень надежные), лучше использовать powershell. если невозможно полностью отказаться от cmd - то хотя бы вставку на пошике.
Код:
$dates = (Get-Date -Format dd.MM.yyyy) + ";" + ((Get-Date).AddDays(-1).ToString("dd.MM.yyyy"))
|
Technik_spat |
15-07-2021 12:48 2962195 |
Цитата:
Цитата 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;
|
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
|
Technik_spat |
15-07-2021 13:18 2962200 |
Огромное СПАСИБО!!!!
Получилось всё))))
|
в переменную в 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, как я и писал ранее - довольно громоздко, хотя этот вариант надежен весьма, даже что-то придумать не могу как его сломать.
|
Время: 07:25.
© OSzone.net 2001-