Создание папки с заданным именем
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Создание папки с заданным именем
Уважаемые форумчане!
Я не спец в написании программного кода скриптов и обращаюсь за помощью.
Имеем: 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".
------------
Пожалуй и всё, что хотелось спросить.
Искренне надеюсь на вашу помощь.
Я не спец в написании программного кода скриптов и обращаюсь за помощью.
Имеем: 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 раза.
АлексейS
Предлагаю использовать для отправки последовательности нажатий клавиш функцию send из утилиты TCFS2. Она позволяет посылать символы с сохранением регистра и раскладки (см. модификатор ~). То есть строку параметров (StrPar) для TCFS2 готовить в скрипте (конечно в случае, если возможностей самой TCFS2 для выполнения задачи недостаточно) и вызывать утилиту как-то так:
Предлагаю использовать для отправки последовательности нажатий клавиш функцию send из утилиты TCFS2. Она позволяет посылать символы с сохранением регистра и раскладки (см. модификатор ~). То есть строку параметров (StrPar) для TCFS2 готовить в скрипте (конечно в случае, если возможностей самой TCFS2 для выполнения задачи недостаточно) и вызывать утилиту как-то так:
Код: Выделить всё
WScript.CreateObject("WScript.Shell").Exec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" & StrParsa
Зачем навязывать то, что по определению хуже по реализации? Есть нативный метод создания папки в FSO, её и использовать. Либо md. Примеров хватает.
P.S.: У нас тут в личке разбор полётов. Повременим, пока человек разберётся, что к чему.
Зачем навязывать то, что по определению хуже по реализации? Есть нативный метод создания папки в FSO, её и использовать. Либо md. Примеров хватает.
P.S.: У нас тут в личке разбор полётов. Повременим, пока человек разберётся, что к чему.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Пожалуй, ты прав, хотя я ничего не навязывал, а буквально пытался ответить на поставленный вопрос
Просто сам давно маялся с такой проблемой, как смена раскладки.
АлексейS
Пример, симметричный предложенному с SendKeys, но с использованием send в TCFS2:
Пожалуй, ты прав, хотя я ничего не навязывал, а буквально пытался ответить на поставленный вопрос
, не привязываясь к конкретной задаче, решаемой автором.Как реализовать выполнение скрипта на конкретной раскладке
Просто сам давно маялся с такой проблемой, как смена раскладки.
АлексейS
Пример, симметричный предложенному с SendKeys, но с использованием send в TCFS2:
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "send(`{F7}`) send(`~(PHOTO){ENTER}`)"
%COMMANDER_EXE%,13
Создать папку PHOTO
-1
sa
Исходный умысел в решении, а не использовании клавиш.
В примере вместо send(`{F7}`) лучше взять tcm(907,1).
Исходный умысел в решении, а не использовании клавиш.
В примере вместо send(`{F7}`) лучше взять tcm(907,1).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Я пробовал. Нет реакции.sa писал(а):Лучше ещё и окно дополнительно указать, которому посылаются нажатия.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Окно указывать в параметрах функции send совсем не обязательно - эта опция нужна лишь для того, чтобы остановить посыл нажатий, если окно станет неактивным.
А создавать каталоги действительно лучше через функции оболочки, куда можно передать имя целиком, создавать каталог путем посыла нажатий клавиш - это маразм.
А создавать каталоги действительно лучше через функции оболочки, куда можно передать имя целиком, создавать каталог путем посыла нажатий клавиш - это маразм.
О чём и речь: клавиша Enter совсем не безобидна, если окажется в непредназначенном для неё окне.MVV писал(а):эта опция нужна лишь для того, чтобы остановить посыл нажатий, если окно станет неактивным.
А внутри архива (например, ZIP) получится?MVV писал(а):А создавать каталоги действительно лучше через функции оболочки
Вот и я о чём.MVV писал(а):создавать каталог путем посыла нажатий клавиш - это маразм
А ты попробуй.sa писал(а):А внутри архива (например, ZIP) получится?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Как же всё просто, оказывается...
Сосед обращается к соседям за помощью - мол, нож затупился... не режет. А хлебушка бы отрезать.
И тут, как бы ему, но на самом деле между собой остальные начинают рассуждать:
1. Да бруском его заточи. Нету? Пойди купи. Куда? Да хоть в Леруа...
2. А наждачком бы лучше. Дороже? Ну а как ты хотел?
3. Ты просто два ножа друг об дружку потри. Должно помочь.
n. А вообще это делается так: добудь руды, выплавь сталь, ну и ручками... ручками...
А у каждого и ножей, и желания помочь хоть отбавляй.
В чём смысл задавать вопрос знающему? Он ведь знает. У него вопросов нет.
Ошибся я, видимо. Здесь ответа не найти.
Здесь общаются знающие с понимающими.
Сосед обращается к соседям за помощью - мол, нож затупился... не режет. А хлебушка бы отрезать.
И тут, как бы ему, но на самом деле между собой остальные начинают рассуждать:
1. Да бруском его заточи. Нету? Пойди купи. Куда? Да хоть в Леруа...
2. А наждачком бы лучше. Дороже? Ну а как ты хотел?
3. Ты просто два ножа друг об дружку потри. Должно помочь.
n. А вообще это делается так: добудь руды, выплавь сталь, ну и ручками... ручками...
А у каждого и ножей, и желания помочь хоть отбавляй.
В чём смысл задавать вопрос знающему? Он ведь знает. У него вопросов нет.
Ошибся я, видимо. Здесь ответа не найти.
Здесь общаются знающие с понимающими.
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
АлексейS
В рамках приведённого Вами примера вопрос звучал бы несколько иначе:
- Я тут где-то точилку для ножей надыбал, но она точит, только если нож правильно вставить.
Далее, Вам дают пару-тройку советов, что и как надо в точилке переделать, на что следует:
- Я в точилках не понимаю и понимать не хочу, а раз все такие умные - ну-ка кинулись и точилочку мне переделали. В своё свободное время, вместо той ерунды, которой там занимаетесь.
А о хлебушке речи не было...
В рамках приведённого Вами примера вопрос звучал бы несколько иначе:
- Я тут где-то точилку для ножей надыбал, но она точит, только если нож правильно вставить.
Далее, Вам дают пару-тройку советов, что и как надо в точилке переделать, на что следует:
- Я в точилках не понимаю и понимать не хочу, а раз все такие умные - ну-ка кинулись и точилочку мне переделали. В своё свободное время, вместо той ерунды, которой там занимаетесь.
А о хлебушке речи не было...
Serge Yolkin
Та же история в личке. Увидел только обвинения в непонимании задачи и нежелание разбираться с конкретными примерами по ссылкам. Всё свелось к упражнениям в словесности...
Та же история в личке. Увидел только обвинения в непонимании задачи и нежелание разбираться с конкретными примерами по ссылкам. Всё свелось к упражнениям в словесности...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.