Добавление нуля к моему имени файла в пакетном скрипте - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь добавить 1 к текущему дню, но для того, чтобы это было возможно, я получил дату в одну цифру (потому что она не может добавить 01 к 1 или что-то в этом роде). После того, как это работает, я не могу вернуть его к двузначному числу (например: 01, 02, 09) Мой код выглядит так:

Set /a day=%date:~1,2% (this is 2)
Set /a day+=1            (this is 3 now)
Set day=0%day%       (this is zero)     

Это говорит только о 0 перед Я пытался с двумя разными переменными, но он работает одинаково

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Как предположил @Squashman, PowerShell делает это довольно легко.

FOR /F %a IN ('powershell -NoProfile -Command "'{0:yyyy-MM-dd}' -f (Get-Date).AddDays(1)"') DO SET "NEWDATE=%a"
ECHO %NEWDATE%

В сценарии .bat удвойте переменную % символов.

FOR /F %%a IN ('powershell -NoProfile -Command "'{0:yyyy-MM-dd}' -f (Get-Date).AddDays(1)"') DO SET "NEWDATE=%%a"
ECHO %NEWDATE%

Еще проще, если вы используете PowerShell, а не cmd, где он должен быть заключен в цикл FOR.

$newdate = '{0:yyyy-MM-dd}' -f (Get-Date).AddDays(1)
0 голосов
/ 02 мая 2018

Изменяя число в этой переменной day=+1, вы добавите больше дней к вашему результату, или изменив на day=-1, удалит день и т. Д.

@echo off
set day=+1
echo>"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%-%mm%-%dd%"
echo %DD%
pause

Это будет повторять только день +1. Однако, если вы хотите отобразить результат с полной датой, просто наберите echo %result%

YYYY, MM и DD в любом случае разделены на отдельные переменные, поэтому вы можете использовать их, если хотите.

Так же, как sidenote:

echo>"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right

почти так же, как:

echo s=DateAdd("d",%day%,now) : d=weekday(s) >"%temp%\%~n0.vbs" 
echo WScript.Echo year(s)^& right(100+month(s),2)^& right >>"%temp%\%~n0.vbs"

CMD будет в значительной степени делать то же самое для обоих, то есть передавать данные в файл. Я просто делаю это, читая строку, и вы сразу же видите, что делает эта строка, echo во внешнем файле, следующая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...