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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] формат даты для имени нового архива %date:~6,4%\%date:~3,2%\%~n1_%date:~0,2%

Ответить
Настройки темы
CMD/BAT - [решено] формат даты для имени нового архива %date:~6,4%\%date:~3,2%\%~n1_%date:~0,2%

Аватара для RUVATA

Старожил


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


Конфигурация

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


Задача - батник, для ежедневной плановой архивации данных при помощи 7-z
Найдено много примеров, справочник по командам... все есть все готово - работает.

В процессе, просто перенял конструкцию из примера, где вновь созданный архив именовался значением текущей даты,
но так как ":" или "/" в именах файлов использоваться не могут переменная %Date% в стандартном виде не могла быть использована,
Автор решил проблему таким образом...
присвоив переменной которая впоследствии выступает именем архива следующее значение
...%date:~6,4%_%date:~3,2%_%date:~0,2%

Очень много примеров в сети с использованием такой схемы, но нигде мне так и не удалось
получить обяснения этих загадочных "6,4" , "3,2" после унарного оператора "~" ....
Очень хотелось бы узнать, что это за значения, откуда они берутся, или как вычисляются?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:24, 04-08-2010

 

Старожил


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

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


хм... а set /? Вы не хотите попробовать? А еще прямо в начале радела по скриптам есть полезная ссылка...

А если в кратце, то Если вместо %переменная% взять %переменная:~начало,длина% - получим часть строки

-------
Как сказало Дерево Дровосеку: "я - пень".

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

Отправлено: 16:37, 04-08-2010 | #2



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

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


Аватара для RUVATA

Старожил


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

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


прозрение...
Спасибо.
Юзверь, хоть и опытный, - все равно юзверь

PS: А в справке так и не удалось найти ничего на этот счет...
Set /? тоже ничего особенного не дает - кажет, что "~" среди прочих - унарный оператор
(принцип - то изначально был понятен, я почему-то сразу не сообразил, что это позиция вхождения и кол-во символов через запете )...
Так в каком разделе все таки можно почитать "Маркса" ?

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


Отправлено: 18:51, 04-08-2010 | #3


Ветеран


Contributor


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

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


RUVATA, а ежели читать внимательнее :
читать дальше »
Цитата set /?:

Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".


Можно также использовать строки расширения.

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата. Если длина не указана, по умолчанию используется оставшееся
значение переменной. Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.

%PATH:~-10%

извлечет последние 10 символов переменной PATH.

%PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.
Вместо «PATH» может быть использована любая переменная окружения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:50, 04-08-2010 | #4


Аватара для RUVATA

Старожил


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

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


Имея небольшой опыт объектно-ориентированного программирования, я почему-то был полностью уверен, что переменная %DATE% имеет соответствующий тип данных - "дата", а получается что %DATE% - это "строка"?
В этой среде получается нет разделения на типы данных, они все строковые?

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...

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

Отправлено: 08:03, 05-08-2010 | #5


Аватара для gora

дважды дед


Contributor


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

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


Небольшая памятка:
Код: Выделить весь код
@Echo Off
:: Кодировка файла 'Кирилица DOS' (866)
Set var=123456789
Echo.
Echo 					Запись		Значение
Echo.
Echo Переменная полностью			%%var%%		%var%
Echo.
Echo Первые три символа			%%var:~0,3%%	%var:~0,3%
Echo Последние три символа			%%var:~-3%%	%var:~-3%
Echo Три символа начиная с шестого		%%var:~5,3%%	%var:~5,3%
Echo Без первых трех символов		%%var:~3%%	%var:~3%
Echo Без последних трех символов		%%var:~0,-3%%	%var:~0,-3%
Echo Без первых двух и последних трех	%%var:~2,-3%%	%var:~2,-3%
Echo.
Echo Замена части переменной (45 на abc)	%%var:45=abc%%	%var:45=abc%
Echo Замена части переменной и символов
Echo до нее (23, и все что до этого, на xyz)	%%var:*23=xyz%%	%var:*23=xyz%
Echo Удаление части переменной (567)		%%var:567=%%	%var:567=%
Pause>Nul

Последний раз редактировалось gora, 05-08-2010 в 09:39.

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

Отправлено: 08:43, 05-08-2010 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] формат даты для имени нового архива %date:~6,4%\%date:~3,2%\%~n1_%date:~0,2%

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Команды в Win (date /T). Выбор формата даты. timur_m Скриптовые языки администрирования Windows 26 10-02-2019 05:52
Разное - [решено] Computer Management is not up-to-date stolyar Microsoft Windows 7 2 12-03-2010 10:05
MySQL - Не могу добавить $date в DB MySQL darksmoke Программирование и базы данных 4 09-05-2008 19:07
Date /t mihmih Microsoft Windows NT/2000/2003 1 23-01-2006 10:33
Date\Time в javascript boneheap Вебмастеру 1 13-10-2004 11:11




 
Переход