View previous topic :: View next topic |
Author |
Message |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Tue Apr 18, 2006 10:51 Post subject: Как создать папку и сразу перейти в нее одной кнопкой? |
|
|
Была такая тема - про создание папок с именем состоящим из дат и т.д.
http://forum.wincmd.ru/viewtopic.php?t=682&postdays=0&postorder=asc&start=0
LocKtaR-o-DarK wrote: | Господа это можно сделать и без скриптов.
И довольно просто.
Для этого создаем новую кнопку
В строке "Команда" пишем
В строке "Параметры" пишем
Code: | for /f "tokens=1,2,3,4 delims=. " %%a in ('date /t') do md "%%d%%c-%%b-%%a" |
Значок на свое усмотрение, конечно же.
Формат отображения тоже.
Удачи. |
Этого всего не нужно нужно просто создать папку
Code: | cmd /c
md description |
Можно ли туда же прикрутить команду "cd description"?
Простейшим выходом, наверное, будет написать батник с этими двумя командами и запускать его, но может еще как-то можно извратиться? |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Tue Apr 18, 2006 13:26 Post subject: |
|
|
Quote: | Можно ли туда же прикрутить команду "cd description"? |
Что-то не получается... Вообще говоря, cmd.exe позволяет объединять несколько команд вместе, но в данном случае это не прокатывает: команда cd отрабатывается интерпретатором cmd.exe, он сменяет каталог для себя самого, после чего благополучно завершается, а Тотал так и остаётся в неведении, что кто-то пытался сменить в нём каталог. Похоже, что скрипты - единственный способ, потому как даже BAT- и CMD-файлы выполняются командным интерпретатором, и смена каталога в них не прокатывает. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Tue Apr 18, 2006 14:35 Post subject: |
|
|
Ага, вроде того. Попробую еще извратиться с переменными пути самого тотала типа %P... |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Tue Apr 18, 2006 14:47 Post subject: |
|
|
В принципе, легко написать для этого vbs-скрипт. Только он будет использовать Script Helper, чтобы заставить TC выполнить команду перехода в папку. Подойдет? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Thu Apr 20, 2006 07:13 Post subject: |
|
|
Пойдет. Если поможете, будет вообще замечательно, я полный ламер в vbs-скриптах. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Thu Apr 20, 2006 11:15 Post subject: |
|
|
aldares
Сохрани с расширением vbs. Запускай, как обычный exe-шник. Параметром можно указать название папки. Не забудь установить Script Helper.
Ограничение - если создаваемая папка уже существует, ничего не произойдет.
Code: | '========================================================
' Создание папки и переход в нее в TC
' В параметрах вызова из TC можно указать название папки,
' иначе будет вызван диалог ввода имени папки
'========================================================
Dim TCS, DirName, MB
Set TCS = CreateObject("TCScript.Helper")
if WScript.Arguments.Count > 0 then
DirName = WScript.Arguments(0)
else
DirName = InputBox("Введите имя создаваемой папки:", "Создание папки", "")
end if
if Len(DirName) = 0 then
MB = MsgBox("Не задано имя папки!", vbOKOnly + vbExclamation, "Создание папки")
WScript.Quit
end if
TCS.LockTC True
TCS.SendKeystroke("{F7}" & DirName & "{ENTER}" & "{ENTER}")
TCS.LockTC False
Set TCS = Nothing
WScript.Quit |
|
|
Back to top |
|
 |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Thu Apr 20, 2006 12:04 Post subject: |
|
|
Ха, оно работает, но, при вызове по шоткату из StartMenu появляется стандартное тоталовское окошко New directory, где уже вписано DirName ЗАГЛАВНЫМИ буквами. Как я понял Code: | TCS.SendKeystroke("{F7}" & DirName & "{ENTER}" & "{ENTER}") | посылает все эти клавиши самому тоталу, а не окошку создания папки.
Сделал
Code: |
TCS.LockTC True
TCS.SendKeystroke("{F7}" & DirName)
TCS.SendKeystroke("{ENTER}" & "{ENTER}")
TCS.LockTC False
|
Теперь создает и переходит (наверное, вообще 3 команды надо было, в каждой по энтеру). Осталось победить смену регистра.
Странно: если в меню нажать мышом команду - регистр не меняется, с шотката меняется. Причем, шоткаты у меня буквы - shift+d, shift+s - на разные папки. А со стандартными ctrl+alt+f(х) не работает. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Thu Apr 20, 2006 13:29 Post subject: |
|
|
SendKeystroke (SenKeys) вообще очень капризная команда.
Я сначала хотел вызывать командную строку и выполнять "cd ...", но возникают проблемы с SendKeystroke, если в TC включена русская раскладка. Пришлось переделать по-другому. Но и здесь засады
Заглавными буквами у тебя как раз потому что горячие клавиши с Shift-ом. (Что будет, если писать с нажатым Shift? )
Как вариант, вставь паузу (время отпускания Shift-а):
Code: | WScript.Sleep 500
TCS.LockTC True
TCS.SendKeystroke("{F7}" & DirName)
TCS.SendKeystroke("{ENTER}" & "{ENTER}")
TCS.LockTC False |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Thu Apr 20, 2006 13:54 Post subject: |
|
|
>>SendKeystroke (SenKeys) вообще очень капризная команда.
Ага, такие спецэффекты возникают...
Пробовал ставить паузу и секунду и 2, не помогает. Равно как и переназначение клавиш на другие, без шифта. Надо как-то строго обозначить переменную dirname, чтобы с ней ничего не делалось... |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Thu Apr 20, 2006 14:49 Post subject: |
|
|
Хорошо, тогда вернемся к прежнему варианту... Тебя устроит работа скрипта только при включенной английской раскладке? |
|
Back to top |
|
 |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Fri Apr 21, 2006 12:38 Post subject: |
|
|
Устроит. Как правило английская и включена. Мне эта команда нужна для разгребания медиа-контента и конкретно для создания трех папок - description, sub и _misc. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Fri Apr 21, 2006 13:50 Post subject: |
|
|
Сделал через вызов TotalCmd.exe с параметрами. У этого способа пока не увидел вообще никаких недостатков.
Теперь сделал, что если создаваемая папка уже существует, ошибки не будет - переходим в эту папку.
Code: | '========================================================
' Создание папки и переход в нее в TC
' В параметрах вызова из TC можно указать название папки,
' иначе будет вызван диалог ввода имени папки
'========================================================
Dim FSO, TCS, WS, TotalCmd, DirName, DirPath, MB
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set WS = WScript.CreateObject("WScript.Shell")
TotalCmd = """" & TCS.TCPath & "\totalcmd.exe"""
if WScript.Arguments.Count > 0 then
DirName = WScript.Arguments(0)
else
DirName = InputBox("Введите имя создаваемой папки:", "Создание папки", "")
end if
if Len(DirName) = 0 then
MB = MsgBox("Не задано имя папки!", vbOKOnly + vbExclamation, "Создание папки")
WScript.Quit
end if
DirPath = TCS.GetSrcPath & "\" & DirName
if not FSO.FolderExists(DirPath) then
FSO.CreateFolder(DirPath)
end if
WS.Run TotalCmd & " /o /s """ & DirPath & """"
Set FSO = Nothing
Set TCS = Nothing
Set WC = Nothing
WScript.Quit |
ЗЫ. Кстати, при таком способе можно управлять не только активной панелью. Например, можно открыть созданную папку в противоположной панели. |
|
Back to top |
|
 |
aldares
Joined: 28 Dec 2004 Posts: 56
|
(Separately) Posted: Wed Apr 26, 2006 06:19 Post subject: |
|
|
Забавно. НО, главное, работает! Спасибо!
Чтобы в соседней панели открыть папку , как я понял нужно
Code: | WS.Run TotalCmd & " /o /s """ & DirPath & """" |
поменять S на R
Code: | WS.Run TotalCmd & " /o /R """ & DirPath & """" |
? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Wed Apr 26, 2006 09:56 Post subject: |
|
|
aldares
Quote: | Чтобы в соседней панели открыть папку , как я понял нужно поменять S на R? |
Не совсем. Нужно оставить ключ S, а перед путем вставить ключ /R=
Code: | WS.Run TotalCmd & " /o /s /r=""" & DirPath & """" |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
|