Создание папки с заданным именем

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

АлексейS
Сообщения: 2
Зарегистрирован: Чт ноя 07, 2013 17:13
Откуда: Москва

Создание папки с заданным именем

Сообщение АлексейS »

Уважаемые форумчане!
Я не спец в написании программного кода скриптов и обращаюсь за помощью.
Имеем: Windows 7 x64 Ultimate и Total Commander 8.0 и x86, и x64 в одном флаконе.
Суть вопроса...
Автоматизация процессов при работе в файловом менеджере(оболочке) Total Commander не может не радовать удобством и разнообразием.
В частности, выполнение разнообразных скриптов кнопками, созданными на панели инструментов.
Итак: необходимо создать каталог в активной панели с заданным именем, скажем "PHOTO"
Данная опция легко выполнима одной строчкой в "vbs" скрипте -
---------------------
WScript.CreateObject("WScript.Shell").SendKeys"{F7}"&("PHOTO")&"{Enter 1}"
---------------------
И каталог создаётся в активной панели с заданным именем... Но...
Если на данный момент раскладка клавиатуры "английская". А если раскладка "русская", то каталог будет иметь имя - "ЗРЩЕЩ".
Просмотрел и прочитал много разного рода рекомендаций по реализации переключения раскладки на время выполнения скрипта,
но ничего, ставящего суть моей ситуации на место, не нашёл. Либо в этом ни у кого не возникало необходимости,
либо никто на этом моменте не заострялся. А хотелось бы иметь корректно исполняемую функцию.
--------------
Вопрос. Возможно ли в присвоении имени папке избежать нежелательного косяка? Как реализовать выполнение скрипта на конкретной раскладке. (имя папки именно на нужном языке).
--------------
Маленькое дополнение.
Этот нежелательный косяк замечен и в выполнении скрипта создания папки с именем "Дата-Время".
То есть...
Есть "vbs" скрипт...
----------------
WScript.CreateObject("WScript.Shell").SendKeys"{F7}"&Right("0"&Year(date),4)&"-"&Right("0"&Month(date),2)&"-"&Right("0"&Day(date),2)&"_"&Right("0"&Hour(time),2)&"-"&Right("0"&Minute(time),2)&"{Enter 1}"
----------------
... и папка создаётся с именем - "2013-11-07_16-48"... Вроде бы и всё. Чего ещё желать?
Но стоит изменить разделители в дате или во времени... и получаем либо "2013ю11ю07_16-46",
изменив разделитель в дате "-" на ".", и имея "русскую" раскладку клавы на момент выполнения скрипта. А хотелось бы "2013.11.07_16-46"...
либо "2013ю11ю07_16Ж47", изменив разделители и в дате, и во времени. А надо бы - "2013.11.07_16:46".
------------
Пожалуй и всё, что хотелось спросить.
Искренне надеюсь на вашу помощь.
Последний раз редактировалось АлексейS Чт ноя 07, 2013 21:03, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

АлексейS
Предлагаю использовать для отправки последовательности нажатий клавиш функцию send из утилиты TCFS2. Она позволяет посылать символы с сохранением регистра и раскладки (см. модификатор ~). То есть строку параметров (StrPar) для TCFS2 готовить в скрипте (конечно в случае, если возможностей самой TCFS2 для выполнения задачи недостаточно) и вызывать утилиту как-то так:

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

WScript.CreateObject("WScript.Shell").Exec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" & StrPar
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Зачем навязывать то, что по определению хуже по реализации? Есть нативный метод создания папки в FSO, её и использовать. Либо md. Примеров хватает.

P.S.: У нас тут в личке разбор полётов. Повременим, пока человек разберётся, что к чему.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

АлексейS
Пример, симметричный предложенному с SendKeys, но с использованием send в TCFS2:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "send(`{F7}`)  send(`~(PHOTO){ENTER}`)"
%COMMANDER_EXE%,13
Создать папку PHOTO


-1
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Исходный умысел в решении, а не использовании клавиш.

В примере вместо send(`{F7}`) лучше взять tcm(907,1).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):лучше взять
Я же написал: симметричный пример. Лучше ещё и окно дополнительно указать, которому посылаются нажатия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):Лучше ещё и окно дополнительно указать, которому посылаются нажатия.
Я пробовал. Нет реакции.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Окно указывать в параметрах функции send совсем не обязательно - эта опция нужна лишь для того, чтобы остановить посыл нажатий, если окно станет неактивным.

А создавать каталоги действительно лучше через функции оболочки, куда можно передать имя целиком, создавать каталог путем посыла нажатий клавиш - это маразм.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):эта опция нужна лишь для того, чтобы остановить посыл нажатий, если окно станет неактивным.
О чём и речь: клавиша Enter совсем не безобидна, если окажется в непредназначенном для неё окне.
MVV писал(а):А создавать каталоги действительно лучше через функции оболочки
А внутри архива (например, ZIP) получится?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):создавать каталог путем посыла нажатий клавиш - это маразм
Вот и я о чём.
sa писал(а):А внутри архива (например, ZIP) получится?
А ты попробуй.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
АлексейS
Сообщения: 2
Зарегистрирован: Чт ноя 07, 2013 17:13
Откуда: Москва

Сообщение АлексейS »

Как же всё просто, оказывается...

Сосед обращается к соседям за помощью - мол, нож затупился... не режет. А хлебушка бы отрезать.
И тут, как бы ему, но на самом деле между собой остальные начинают рассуждать:
1. Да бруском его заточи. Нету? Пойди купи. Куда? Да хоть в Леруа...
2. А наждачком бы лучше. Дороже? Ну а как ты хотел?
3. Ты просто два ножа друг об дружку потри. Должно помочь.
n. А вообще это делается так: добудь руды, выплавь сталь, ну и ручками... ручками...

А у каждого и ножей, и желания помочь хоть отбавляй.

В чём смысл задавать вопрос знающему? Он ведь знает. У него вопросов нет.

Ошибся я, видимо. Здесь ответа не найти.

Здесь общаются знающие с понимающими.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

это маразм
Даже не представляю, найдутся ли у вас слова для ситуации, когда пользователь собственными руками создаст папку. :)
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

АлексейS
В рамках приведённого Вами примера вопрос звучал бы несколько иначе:
- Я тут где-то точилку для ножей надыбал, но она точит, только если нож правильно вставить.
Далее, Вам дают пару-тройку советов, что и как надо в точилке переделать, на что следует:
- Я в точилках не понимаю и понимать не хочу, а раз все такие умные - ну-ка кинулись и точилочку мне переделали. В своё свободное время, вместо той ерунды, которой там занимаетесь.
А о хлебушке речи не было...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Serge Yolkin
Та же история в личке. Увидел только обвинения в непонимании задачи и нежелание разбираться с конкретными примерами по ссылкам. Всё свелось к упражнениям в словесности...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить