Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Вместо двоеточия знак ^
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 08:39    Post subject: Вместо двоеточия знак ^ Reply with quote

Друзья! Просто нервов не хватает...
Мне нужен скрипт, по выполнению которого, тотал командер переходил бы в папку:
A:\Orders\Date
Date - всмысле в папку, текущего дня. Я создал вот такой скрипт:
Code:
Dim TCS, strDayOfMonth, strMonth, strYear, YYYYMMDD
Set TCS = CreateObject("TCScript.Helper")
strDayOfMonth = right("0" & day(date()),2)
strMonth = right("0" & month(date()),2)
strYear = right (year(date()),4)
YYYYMMDD = strYear & "-" & strMonth & "-" & strDayOfMonth
TCS.SendCommand "cm_EditPath"
TCS.SendKeystroke "a:\order\" & YYYYMMDD

Set TCS = Nothing

Пустая строка осталась для Enter. Всё прекрасно работает. Вид даты отформотировался правильно(так же как и в именах папок), но вот одна ерунда, просто ни в какую не работает.... Вместо двоеточия у меня забивается знак каретки ^. Что я только не перепробовал.... Подскажите от чего так происходит? Можно ли как то решить эту проблему? Или подскажите альтернативный вариан решения задачки.

У меня кстати есть альтернативый вариант, но его не получается осуществить ввиду моей необразованности.... Sad Прежде чем начинать править алресную строку, можно было бы перейти в корневой каталог A:\Orders\, а уж потом заходить в папку с именем текущей даты. Но к сожалению, как я сказал выше у меня это не выходит...


Last edited by taravasya on Sat Sep 18, 2010 15:44; edited 1 time in total
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Sat Sep 18, 2010 09:59    Post subject: Reply with quote

Есть ткая замечательная программа xxcopy, возможности которой просто безграничны. Цитирую справку к ней:
Quote:
----- Predefined macros to embed current date and time ----

/$xxxx$ Predefined macros for current date and time which may appear
anywhere in the command argument and other XXCOPY parameters.
Examples below are for the current time, Dec 25, 2002 13:15:30.
/$DATE$ Expands to month and date (equivalent to /$MMDD$) --> "1225".
/$TIME$ Expands to hour and minutes (equiv. /$HHNN$) --> "1315".
/$YYMMDD$ Expands to 2-digit year month day --> "021225".
/$YYYY-MM$ Expands to 4-digit year month --> "2002-12".
/$HHNNSS$ Expands to hour minutes second --> "131530".
/$MON-DD$ Expands to month day --> "DEC-25".
/$II-IWK-K$ Expands to ISO 8601 year-wkno-dow --> "02-W52-3".
То есть она "понимает" текущую дату и время.
Суть твоей задачи, я так вижу, выполнить
Code:
cd xxx
где "ххх" - текущая (сегодняшняя) дата. Можно попробовать использовать xxcopy. Например, так - она составляет список директорий (точно умеет) и каким-то образом (пока не думал каким) "узнает", какая из них соответствует $DATE$, и возвращает это имя.
Сам я с этими макросами не игрался, а сейчас немного занят. Может, попозже, самому интересно. Но тебе скачать программу, зайти на сайт, почитать справку - явно имеет смысл.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Sat Sep 18, 2010 15:24    Post subject: Reply with quote

Аж интересно стало, как программа может вернуть имяSmile

taravasya, а двоеточие случайно не является каким-либо специальным символом? Может, его надо как-нибудь экранировать?
И зачем использовать ручную правку пути? Разве в TCScript.Helper нет функции смены каталога? Я его ни разу в глаза не видел, но уверен, что про эту функцию создатели не могли забыть.

И еще просьба (думаю, модераторы меня поддержат) не употреблять ненормативную лексику на данном ресурсе (тем более, капсом).
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 15:51    Post subject: Reply with quote

MVV wrote:
Может, его надо как-нибудь экранировать?

Как это делается?
MVV wrote:
Разве в TCScript.Helper нет функции смены каталога?

Почему же... есть. Назад, вперёд, под курсором, мой компьютер.... да их много... Но вот такой команды, что-бы взять и одним действием перейти в "произвольный" каталог я не встречал. (естесственно кроме командной и адресной строк). Кстати! Как вариант можно будет попробовать камандную строку тотала использовать. Где то я видел такое.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Sat Sep 18, 2010 15:53    Post subject: Reply with quote

Quote:
Аж интересно стало, как программа может вернуть имя
Управлние xxcopy осуществляется почти исключительно из батников ввиду очевидных неудобств управления напрямую из ком.строки. Говоря "вернуть", я имел в виду примерно следующее - в батнике проверяется некое условие (например, равенство имени директории имени, сформированному из даты) и, в случае истины, копируется файл в директорию.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 18:20    Post subject: Reply with quote

Всё!!! Пришлось его заставить.....
Code:
Dim TCS, strDayOfMonth, strMonth, strYear, YYYYMMDD
Set TCS = CreateObject("TCScript.Helper")
strDayOfMonth = right("0" & day(date()),2)
strMonth = right("0" & month(date()),2)
strYear = right (year(date()),4)
YYYYMMDD = strYear & "-" & strMonth & "-" & strDayOfMonth
TCS.SendCommand "cm_EditPath"
TCS.SendKeystroke "a" & Chr(58) & "\order\" & YYYYMMDD
TCS.SendKeystroke "{Enter}"
Set TCS = Nothing

Таким образом вместо двоеточия в коде, я указал ему конкретный символ. Теперь можно переименовать тему на:
Скрипт для мгновенной смены каталога.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Sep 18, 2010 19:14    Post subject: Reply with quote

Code:
TOTALCMD#BAR#DATA
%ComSpec% /c for /f "tokens=1,2,3 delims=./-" %a in ("%date%") do "%commander_path%\totalcmd.exe"
/o /s /l="D:\Orders\%%c%%b%%a"
%commander_path%\totalcmd.exe,5
Перейти в папку с сегодняшней датой

1
-1
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 19:26    Post subject: Reply with quote

У меня переходит в корень диска D, и на этом навигация заканчивается. У Вас это работает? Я не пойму, у меня что, что то неладное в системе с двоеточием?
Кроме того, подозреваю, что у Вас не отформатирована дата. У меня папка смотрится так:
a:\orders\2010-09-18\
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Sep 18, 2010 19:37    Post subject: Reply with quote

taravasya
Ну Вы даётес. Поплыли:
taravasya wrote:
Вместо двоеточия у меня забивается знак каретки ^
SendKeystore имитирует нажатие клавиш, но при этом не следит за раскладкой. Символ ":" русской раскладки находится на клавиатуре сопряжённо с символом "^", как и с цифрой 6. Поэтому совет банален: вызывать двоеточие по клавише где находится буква Ж, т.е. писать ":" в английской раскладке.
taravasya wrote:
Но вот такой команды, что-бы взять и одним действием перейти в "произвольный" каталог я не встречал.
Ну что'ж так плохо читаем ReadMe? Я же тут только скрипт привёл, где она есть, только в другую панель. Команда TCS.SetTrgPath. А в текущую TCS.SetSrcPath, соответственно.
Поэтому в скрипте меняем строки:
Code:
TCS.SendCommand "cm_EditPath"
TCS.SendKeystroke "a" & Chr(58) & "\order\" & YYYYMMDD
TCS.SendKeystroke "{Enter}"
на
Code:
Path = "A:\order\" & YYYYMMDD
TCS.SetSrcPath(Path)
А если нужно в новой вкладке, то TCS.SetSrcPath(Path, True)
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 19:49    Post subject: Reply with quote

Flasher wrote:
Ну что'ж так плохо читаем ReadMe?

Да честно говоря не очень внимательно и читал. Времени особо нет. Все не имеющее прямого отношения к работе, на коленках делается Sad увы...
Flasher
Спасибо большое за подсказку. Действительно, Ваш метод думаю будет надёжнее.
А вот с двоеточием, непоняточка. У меня на клавиатуре, двоеточие только и получается при англицкой раскладке через Shift+: Confused
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Sep 18, 2010 19:52    Post subject: Reply with quote

taravasya wrote:
У меня папка смотрится так: a:\orders\2010-09-18\
Замените
/o /s /l="D:\Orders\%%c%%b%%a" на
/o /s /l="A:\Orders\%%c-%%b-%%a"
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 19:59    Post subject: Reply with quote

Теперь стопорится в диске а:\ Sad
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Sep 18, 2010 20:01    Post subject: Reply with quote

taravasya wrote:
А вот с двоеточием, непоняточка. У меня на клавиатуре, двоеточие только и получается при англицкой раскладке через Shift+:
Его можно вызывать хоть так - TCS.SendKeystore "+{;}", хоть так - TCS.SendKeystore ":". Не суть важно.
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 20:04    Post subject: Reply with quote

Ну первый вариант я не пробовал, а вот второй вводил ^ Я же говорю... по всякому пробовал. chr( 58 ), срабатывает без осечек.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Sep 18, 2010 20:17    Post subject: Reply with quote

taravasya wrote:
Теперь стопорится в диске а:\ Sad
У Вас в скриптах order, а на словах orderS. Определитесь уже.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group