Создание папки вида: дата+время
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5  Next  :| |:
Total Commander -> Автоматизация Total Commander

#31:  Author: Tol!kLocation: Арзамас PostPosted: Wed Nov 27, 2013 19:47
    —
Code:
@echo off &setlocal enableextensions

set "Folder=%%Year%%\TEST-%%N\Example_%%M"
set /a cntN=70
set /a cntM=2

call :Year
for /l %%N in (1,1,%cntN%) do (
   for /l %%M in (1,1,%cntM%) do (
      call 2>nul md "%Folder%"
   )
)
goto :eof

:Year
::   date DD.MM.YY
for /f "tokens=3 delims=-/." %%y in ("%date%") do set /a Year=20%%y
if %Year% GTR 200000 set /a Year=Year-200000
goto :eof

сохрани как .cmd


Last edited by Tol!k on Wed Nov 27, 2013 22:44; edited 1 time in total

#32:  Author: DiverNirvanaLocation: Ireland PostPosted: Wed Nov 27, 2013 22:20
    —
Огромное спасибо Tol!k.

Необходимые 70 папок и что самое главное 2 вложенных в каждую из них, исправно создаются в корне диска с которого был запущен *cmd.
Пока не получилось , научить скрипт создавать рядом с собой папку с датой и уже в ней создавать все остальное (хотя вроде в самом скрипте все для этого есть).
--------------------
Пытаюсь получить что-то вроде этого (Не могу прилепить изображение, было бы нагляднее).
2013\
|__TEST-01\
| |____Example_1
| |____Example_2
|__TEST-02\
| |____Example_1
| |____Example_2
|__TEST-03\
| |____Example_1
| |____Example_2
|
|
--------------------
и ни как не соображу где изменить вид нумерации на двухзначный,
типа не 1 а 01.
--------------------
В любом случае - спасибо большое. (сам, я бы не скоро до этого допер Embarassed )

#33:  Author: Tol!kLocation: Арзамас PostPosted: Wed Nov 27, 2013 22:43
    —
DiverNirvana wrote:
создавать рядом с собой

обновил код

Добавлено спустя 29 минут:

Quote:
изменить вид нумерации на двухзначный

Code:
@echo off &setlocal enableextensions

set "Folder=%%Year%%\TEST-%%N%%\Example_%%M%%"
set /a cntN=70
set /a cntM=2

call :Year
for /l %%n in (1,1,%cntN%) do (
   set /a N=100%%n &call set N=%%N:~-2%%
   for /l %%m in (1,1,%cntM%) do (
      set /a M=100%%m &call set M=%%M:~-2%%
      call 2>nul md "%Folder%"
   )
)
goto :eof

:Year
::   date DD.MM.YY
for /f "tokens=3 delims=-/." %%y in ("%date%") do set /a Year=20%%y
if %Year% GTR 200000 set /a Year=Year-200000
goto :eof


Last edited by Tol!k on Wed Nov 27, 2013 23:14; edited 1 time in total

#34:  Author: DiverNirvanaLocation: Ireland PostPosted: Wed Nov 27, 2013 23:13
    —
Tol!k wrote:
обновил код


Спасибо огромное - все работает как часики. Very Happy Very Happy Very Happy
(блин... как я завидую вашим знаниям.... Embarassed )

пойду грызть гранит науки на ss64.com, русских пока не нашел.
Еще раз - тысяча благодарностей.

#35:  Author: Tol!kLocation: Арзамас PostPosted: Thu Nov 28, 2013 00:04
    —
Quote:
русских пока не нашел
русских форумов? на осзоне есть, на ру-борде 2 темы

http://forum.oszone.net/forum-102.html
http://forum.ru-board.com/topic.cgi?forum=5&topic=33080#1


Last edited by Tol!k on Fri Nov 29, 2013 01:22; edited 1 time in total

#36:  Author: DiverNirvanaLocation: Ireland PostPosted: Thu Nov 28, 2013 02:59
    —
До ру-борда добрался, осзон пока неосилил.....
Читаю все что на глаза попадается... уже нифига не соображаю....
глаза болят, спина болит..... Спасибо за наводку.
Tol!k, не сочтите за наглость,
а как бы выглядел созданный вами скрипт, еслибы имена конечных 2-ух папок должны были быть разными:
типа не Example_01 (и.т.д) а скажем Morning и Evening (к примеру)?
Всетаки, я полный ноль в скриптописании и чем больше читаю, тем меньше соображаю Embarassed

Спасибо еще раз за вашу помощь.

#37:  Author: Tol!kLocation: Арзамас PostPosted: Thu Nov 28, 2013 17:12
    —
Morning и Evening без цифр?
Code:
@echo off &setlocal enableextensions

set "Folder=%%Year%%\TEST-%%N%%\%%Name%%"
set /a cntN=70
set "Names=Morning;Evening;Blah Blah Blah"

call :Year
for /l %%n in (1,1,%cntN%) do (
   set /a N=100%%n &call set N=%%N:~-2%%
   call :Name "%Names%"
   )
)
goto :eof

:Name
for /f "tokens=1,* delims=;" %%a in ("%~1") do (
   set "Name=%%~a"
   call 2>nul md "%Folder%"
   if not "%%~b"=="" call :Name "%%b"
)
goto :eof

:Year   ::   date DD.MM.YY
for /f "tokens=3 delims=-/." %%y in ("%date%") do set /a Year=20%%y
if %Year% GTR 200000 set /a Year=Year-200000
goto :eof

#38:  Author: DiverNirvanaLocation: Ireland PostPosted: Thu Nov 28, 2013 18:29
    —
Tol!k wrote:
Morning и Evening без цифр?

Да, точно так как вы сделали - Спасибо огромное. Very Happy
С нумерованными одноименными коталогами вроде (только вроде Embarassed ) понял а вот с разными именами.... я сколько не пытался, так ничего и не добился....
Видать не с того конца я взялся за изучение.... ни синтаксиса не понимаю, ни констант не знаю, ничего в общем, толком не знаю, все гораздо сложней чем представляется со стороны.

Большое спасибо за вашу помощь.

#39:  Author: Nick PostPosted: Sat Jan 17, 2015 20:13
    —
Как можно сделать, чтобы в конце текущей папки с датой, если она уже существует, то добавлялось бы, например __2, __3 и т.д.?

#40:  Author: FlasherLocation: Москва PostPosted: Sun Jan 18, 2015 07:10
    —
Nick, сделал нативно - в скобках, по аналогии.

#41:  Author: Nick PostPosted: Sun Jan 18, 2015 19:34
    —
Flasher
Ну, если через скрипт делать, то м.б. так:
Формат даты yyyy_MM_dd (такой формат более удобен для сортировки файлов и папок).
Системнй формат времени dd.MM.yyyy, поэтому в строке 23
Code:
Left(D, 5)
"Left(D, 5)" выводится сначала день, потом месяц. А месяц находится посередине, обрезкой даты это не сделать.
И тогда, лучше бы так:
Есть, например папка Firefox_2015_01_10 (м.б. и Firefox_2015_01_10_v5). Встав на эту папку, а потом запустив скрипт хотелось бы, чтобы получилось Firefox_2015_01_18, а далее Firefox_2015_01_18__v2 и т.д. Но, названия - разные, т.е. мб. "Opera_blink_2015_01_10_v3" и т.п.

#42:  Author: FlasherLocation: Москва PostPosted: Sun Jan 18, 2015 22:34
    —
Про формат согласен только в части очерёдности, поправил.
Nick wrote:
И тогда, лучше бы так
Это чем же лучше, если точки дают очевидный формат? Знаки подчёркивания не воспринимаются. Если очень надо, то в 24 строке точки на них легко меняются. Переписывать скрипт под число в конце имени не вижу смысла, т.к. там совсем другой подход будет, придётся с конца строки поочерёдно проверку делать на предмет цифры. Мне не нравится этот путь. И тут речь идёт о создании папок с нуля, а не относительно имён выбранных.

#43:  Author: Nick PostPosted: Wed Jan 21, 2015 18:50
    —
Flasher wrote:
придётся с конца строки поочерёдно проверку делать на предмет цифры.
Так ведь, наверно, можно как-то использовать регулярное выражение вида:
Code:
\d{4}_\d{2}_\d{2}
Оно сразу найдет дату. Иначе получается не информативно (все папки имеют название NewFolder и дата). А так часть названия бралась бы из папки под курсором.

#44:  Author: FlasherLocation: Москва PostPosted: Wed Jan 21, 2015 20:58
    —
Нет, это не годится.
1) Наличие даты - это опция.
2) Это выражение не поможет с вариантом, где, например, на конце "_bla93.285bla732.84.690".
3) Я не хочу отказываться от более быстрой маски.
4) См. посл. предложение предыдущего поста и вторую ссылку. Я зря время тратил на новый скрипт?
Неинформативность в чём заключается? Название файла/папки можно задавать любое.

#45:  Author: Nick PostPosted: Thu Jan 22, 2015 17:37
    —
Параметры: "%P" 1 1 1
Не получается создание папки после v1. Т.е. создаются папки вида: "Новая папка__2015_01_22__v1, а дальше ошибка. Где нужно правильно исправить?
---------------------------
Строка: 56
Символ: 18
Ошибка: Файл уже существует
---------------------------
Сложно ли изменить так, чтобы название бралось из папки (или файла) под курсором, т.е. например, до первого символа "__" слева. Тогда получилось бы так: Новая папка (имя под курсором), а дальше подставляется текущая дата (если уже есть такая папка, то дальше по счетчику)?


Last edited by Nick on Fri Jan 23, 2015 17:38; edited 1 time in total



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5  Next  :| |:
Page 3 of 5

Powered by phpBB © 2001, 2005 phpBB Group