Страница 1 из 2

Кнопка для создания каталога...

Добавлено: Вт июл 19, 2011 16:44
relaxx
Товарищи, нужна кнопка или команда для создания каталога, где первые две цифры будут дата, а следующие две порядковый номер.Как пример:
1901
1902
1903
и т.д.

Добавлено: Вт июл 19, 2011 20:11
Tol!k

Код: Выделить всё

@echo off &setlocal enableextensions &set /a cnt=1
rem Создание каталога: первые две цифры дата, следующие две порядковый номер
rem Если дата в формате DD.MM.YY
for /f "tokens=1 delims=-/." %%d in ("%date%") do set "d=0%%d"
:loop
set /a cnt+=1 &set "n=0%cnt%"
if "%cnt%"=="101" (title Over 100 :^( &pause >nul &exit)
set "new=%d:~-2%%n:~-2%" &md "%new%" 2>nul &&(
"%commander_path%\totalcmd.exe" /O /S /L="%cd%\%new%" &exit) ||goto :loop
Сохрани как текст с расш. .CMD
повесь на кнопку/команду
или помести в папку, перечисленную в %Path% и запускай из ком.строки

Добавлено: Ср июл 20, 2011 00:15
Flasher
relaxx писал(а):Как пример:
1901
Какой-то странный пример. Это год или порядковый номер? Или число + порядковый номер? Или порядковый номер без даты?

Добавлено: Ср июл 20, 2011 11:27
relaxx
Первые две цифры это текущая дата, а две другие порядковый номер.

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

Когда это файл запускаю, всё работает БольшоЕ СПАСИБО за труды,но никак не получается назначить горячие клавиши(.

Добавлено: Ср июл 20, 2011 11:35
Avada
relaxx
Дело, бузусловно, хозяйское, но такой стиль нумерации, ИМХО, визуально плохо воспинимается (хоть бы какой-то разделитель между двумя блоками цифр был!). А выход за пределы текущего месяца в данной группе каталогов считается невозможным?
Насчёт клавиш — для вызова батника создать пользовательскую (em_) команду, а уже для неё назначить клавиши. Описано в справке и много раз говорилось на форуме, поэтому здесь обсуждение подробностей неуместно.

Добавлено: Ср июл 20, 2011 13:09
relaxx
Всё получилось, но только вот непонятно, папки создаются в директории Total Commanderа, а не там где я желаю(

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

Разобрался), а как бы сделать так чтоб созданная папка открывалась?9

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

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

Добавлено: Ср июл 20, 2011 14:34
Avada
relaxx
Спокойно дождаться ответа невозможно? Будет ещё один такой дубль — закрою тему с замечанием.

Добавлено: Ср июл 20, 2011 15:33
MVV
relaxx, батник небось положил в папку тотала и перетянул на панель инструментов? Очисти поле рабочей папки в кнопке.

Добавлено: Ср июл 20, 2011 16:58
relaxx
Нет, я на него назначил клавиши)

Добавлено: Ср июл 20, 2011 16:59
Flasher
relaxx
Значит, в em_команде "Путь запуска" не очистил.

Добавлено: Ср июл 20, 2011 17:06
relaxx
Да было такое дело, потом сам додумался очистил и всё заработало как положено), но мне надо ещё чтоб созданная папка сразу сама открывалась.

Добавлено: Ср июл 20, 2011 17:56
Tol!k
обновил

Добавлено: Чт июл 21, 2011 00:42
Flasher
Для разнообразия (путь запуска также очистить):

Код: Выделить всё

' Создание папки с именем "<текущий день месяца><порядковый №>" и переход в нее в TC
'===============================================================
Dim WSH
Set WSH = WScript.CreateObject("WScript.Shell")
With CreateObject("Scripting.FileSystemObject")
  Set FF = .GetFolder(WSH.CurrentDirectory)
  If Day(date) > 9 Then
    D = Day(date)
  Else
    D = "0" & Day(date)
  End If
  If .FolderExists(FF & "\" & D & "01") Then 
     For Each F in FF.SubFolders
       N = F.Name
       If IsNumeric(N) And Left(N,2) = Trim(D) And Len(N) > 3 Then
         If  Mid(N,3,1) = 0 And Len(N) > 4 Then
           If .FolderExists(FF&"\"&Left(N,4)) Then A = Mid(N,3,2)
         ElseIf Len(N) = 4 Then A = Mid(N,3)
         Else
           B = Mid(N,3)
           A = Abs(Mid(N,3))
         End If
         If Max < A Then Max = A
         If Mx < B Then Mx = B
       End If
     Next
     If Max >= 09 Then
       If Mx < 100 Then
         Folder = FF & "\" & Trim(D) & Abs(Max)+1
       Else
         Folder = FF & "\" & Trim(D) & Abs(Mx)+1 
       End If
     Else
       Folder = FF & "\" & Trim(D) & Left(Max,1) & Abs(Mid(Max,2))+1
     End If
  Else
     Folder = FF & "\" & Trim(D) & "01"
  End If  
  .CreateFolder(Folder)
End With
WSH.Exec"%COMMANDER_PATH%\totalcmd.exe /o /s /l=""" & Folder & """"
Set WSH = Nothing
WScript.Quit
В данном случае приращение будет отталкиваться от максимального порядкового номера вместо латания пробелов. ИМХО, это полезней, т.к. после манипуляций с папками (удаление, перемещение) сохраняется логическая последовательность.

Добавлено: Чт июл 21, 2011 12:30
relaxx
Всем спасибо, Tol!k ваши труды меня удовлетворили)

Добавлено: Чт июл 21, 2011 13:40
Flasher
relaxx
Консольные окна предпочтительней? :wink:
:!: Кстати, в моём случае нет ограниния до 100 номеров.

Add: Маленькую правку сделал.