Войти

Показать полную графическую версию : помогите с %data%


rkudinov@vk
03-08-2016, 11:15
доброго времени суток.
есть кусок батника:


ECHO %DATE%
set /a D=%date:~0,2% - 1
set M=%date:~3,2%
set Y=%date:~8,2%
set DT=%D%%M%%Y%
echo %DT%
rename pp.txt p-%DT%.txt

проблема в том, что вместо желаемого p-020816.txt получается p-20816.txt.
помогите

Iska
03-08-2016, 14:45
проблема в том, что вместо желаемого p-020816.txt получается p-20816.txt. »
Это не проблема, так и должно быть.

Напишите, что Вы хотите получить? Вчерашнюю дату? Так она считается совсем не так (плюс, учитывая, что сегодня может быть первый день месяца и года).

rkudinov@vk
03-08-2016, 15:06
Получить хотел вчерашнию дату что бы с нуля после p- начиналась, но так понимаю не получится..(
А что не так считается (учитывать первый день не нужно) ?

alpap
03-08-2016, 15:21
rkudinov@vk,
Допустим сегодня 01.03.2016, пораскиньте мозгами, отняв отсюда один день, что получится? А ведь и год надо учесть (да и про високосный не забыть :) ).

Если разово и для точно известного конкретного случая пятая строка вашего кода

set DT=%D%%M%%Y%& if %D% leq 9 set DT=0%D%%M%%Y%

все выше сказанное мною - в силе.

rkudinov@vk
03-08-2016, 17:12
Спасибо, помогло.
По поводу первого дня: спасибо за предупреждения. Решу эту задачку самостоятельно.
leg - считает количество символов в переменной?

alpap
03-08-2016, 18:26
leg - считает количество символов в переменной? »
if /?
(меньше-равно)

Iska
03-08-2016, 18:56
Решу эту задачку самостоятельно. »
Можете порыться по разделу — решалась здесь неоднократно.

leg - считает количество символов в переменной? »
«leq». Где читать — показал выше коллега alpap.

alpap
03-08-2016, 19:53
Решу эту задачку самостоятельно. »
В принципе, за вас ее уже дааавно решили:

@echo off
powershell "(get-date).adddays(-1).tostring('ddMMyy')"|set/p x=^& cmd/v/c ren "pp.txt" "p-!x!.txt"
exit
.

Iska
04-08-2016, 00:52
alpap, в этом случае пакетный файл излишен.




© OSzone.net 2001-2012