Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] формат даты для имени нового архива %date:~6,4%\%date:~3,2%\%~n1_%date:~0,2% (http://forum.oszone.net/showthread.php?t=182129)

RUVATA 04-08-2010 16:24 1466769

формат даты для имени нового архива %date:~6,4%\%date:~3,2%\%~n1_%date:~0,2%
 
Задача - батник, для ежедневной плановой архивации данных при помощи 7-z
Найдено много примеров, справочник по командам... все есть все готово - работает.

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

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

NiOl 04-08-2010 16:37 1466775

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

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

RUVATA 04-08-2010 18:51 1466845

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

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

Iska 04-08-2010 21:50 1466942

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» может быть использована любая переменная окружения.

RUVATA 05-08-2010 08:03 1467144

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

gora 05-08-2010 08:43 1467157

Небольшая памятка:
Код:

@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



Время: 03:25.

Время: 03:25.
© OSzone.net 2001-