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 

Windows Script Host
Goto page Previous  1, 2, 3 ... 13, 14, 15 ... 25, 26, 27  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Tue Apr 27, 2010 13:47    Post subject: Reply with quote

Вопрос разрешился как-то загадочно, я сам ничего не понял. Может кто-сталкивался. При установки 3-х систем Тотал оставался на месте, т.е. я его не устанавливаю, а просто копирую (в данном случае он просто был на диске с:\Total...) И во всех трёх системах происходила одна и та же ошибка. Я стал логически размышлять, а что общего между этими системами??? Прищёл к выводу - это, возможно оставшиеся файлы на диске с:\... Я посмотрел - какие-то непонятные 4 файла (Один из них, был толи tc.wc?, толи wc.tc? - откуда он взялся я не знаю). При их удалении всё заработало!!! Установки дополнительных библиотек, что только я не делал - ничего не помогало. А вот удаление - и всё OK. Как будто файл хранил какую-то информацию, блокирующую работу скрипта.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sun May 09, 2010 16:25    Post subject: Reply with quote

Пользуюсь скриптами с использованием Helperа - очень нравится. Недавно заметил, что скрипт, который постоянно работал, отказывался срабатывать. После долгих мучений понял что если путь или имя содержит определённые знаки, то ничего не просходит. Пример: если целевой каталог %COMMANDER_PATH%\+++\ , то команда TCS.SendKeystroke (Line) отказывается вписывать строку Line = TCS.GetTrgPath . Тестировал все имеющиеся скрипты, выяснилось и другое. Вот простой скрипт:
Code:
' Создание папки в соседней панели с именем файла\папки под курсором
' Параметр "%O"
Dim TCS
    Set TCS = CreateObject("TCSCRIPT.Helper")
    Name  = WScript.Arguments(0)
    Line = TCS.GetTrgPath & "\" & Name
    TCS.SendCommand "cm_MkDir"
    TCS.Pause = 200
    TCS.SendKeystroke (Line)
Set TCS = Nothing


Создайте файл Маша+Вася.txt - и пусть он будет под курсором ("+" пропадает) итог МашаПетя. А фал Маша++Вася.txt - срабатывает нормально

Маша%Вася.txt итог Машаася
Маша~Петя.txt вообще что-то непонятное
С папками обстоит дело, по-другому, но тоже..?! Cоздайте на С диске папки +, ++, +++, %, %% , %%%, ^^^ а в другой панели файл NAME.txt и поочерёдно в каждой из них создайте скриптом папку именем Name (под курсором будет файл NAME.txt)
+ итог c:\/Name а должно быть c:\+\Name
++ итог Name а должно быть c:\++\Name
...
% итог c:\Name а должно быть c:\%\Name
%% итог Name а должно быть c:\%%\Name
...
^ итог c:\Name а должно быть c:\^\Name
^^ итог Name а должно быть c:\^^\Name
...
{123} итог Name а должно быть c:\{123}\Name

Другие символы я не проверял, время не было...
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun May 09, 2010 22:09    Post subject: Reply with quote

Quote:
Символы плюс (+), "крышка" (^), знак процентов (%), тильда (~) и круглые скобки ( ) имеют специальное значение. Чтобы указать передачу одного из этих символов, следует заключить его в фигурные скобки ({}). Например, знаку плюс соответствует код {+}... Фигурным скобкам соответствуют коды {{} и {}}

Это фрагмент из прилагаемого к хелперу файла "SendKeystroke.txt". Это не я придумал, это копипаст из MS документации по VB-шному методу SendKeys, который и используется в хелпере (правда, с некоторыми несущественными дополнениями и переработками). Так что эту особенность тут как-то следует учитывать.
Что касается данного конкретного случая, то я бы предпочел вообще не использовать Тотал для создания новой папки. Для этого у WSH хватает и своих методов. Например, можно вот так:
Code:
Dim TCS, fso, Line
Set TCS = CreateObject("TCSCRIPT.Helper")
Set fso = CreateObject("scripting.filesystemobject")

Line = TCS.GetTrgPath & "\" & WScript.Arguments(0) 
If fso.FolderExists(Line) = False Then fso.CreateFolder(Line)

Set TCS = Nothing
Set fso = Nothing
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun May 09, 2010 23:19    Post subject: Reply with quote

Volniy wrote:
Что касается данного конкретного случая, то я бы предпочел вообще не использовать Тотал для создания новой папки.

В данном случае можно обойтись без хелпера. Например, на VBS, можно так:
Code:
' Создание папки в соседней панели с именем файла\папки под курсором
' Параметры: "%T%O"
Dim TCS, fso, Line
Set fso = CreateObject("scripting.filesystemobject")

Line = WScript.Arguments(0)
If fso.FolderExists(Line) = False Then fso.CreateFolder(Line)

Set fso = Nothing


На batch`e можно обойтись одной только кнопкой. Например так:
Code:
TOTALCMD#BAR#DATA
%ComSpec% /c md
"%T%O"
WCMICONS.DLL,29
Создание папки в соседней панели с именем файла\папки под курсором

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



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon May 10, 2010 13:57    Post subject: Reply with quote

Спасибо за советы, но речь шла не о конкретном скрипте, у меня десятка два скриптов, в которых используется путь или имя под курсором, и все они в папках(++, +++) не срабатывают. Есть три варианта
1. Исправить их и Helper не использовать
2. Подправить автором как-то программу, где при команде TCS.GetTrgPath или подобной пути, имена, имеющие спец знаки читались не посимвольно, а целой строкой
3. Сделать универсальный кусок скрипта, который бы проверял имя, путь на наличие в нём спец знаков и вставлял {} вокруг них, пример
путь c:\+++\ превращался бы в c:\{+}{+}{+}\, если кто может в этом помочь помогите пожалуйста, не хотелось отказываться от Helpera
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Fri May 14, 2010 02:36    Post subject: Reply with quote

Andrey_A wrote:
3. Сделать универсальный кусок скрипта, который бы проверял имя, путь на наличие в нём спец знаков и вставлял {} вокруг них, пример
путь c:\+++\ превращался бы в c:\{+}{+}{+}\, если кто может в этом помочь помогите пожалуйста, не хотелось отказываться от Helpera


Code:
MsgBox ValidPath("c:\+++\^^\%%")

Function ValidPath(Path )
  For i=1 To Len(Path)
    s=Mid(Path,i,1)
    Select Case s
      Case "(",")","{","}","+","%","^","~"
        s="{" & s & "}"
    End Select
    ValidPath=ValidPath & s
  Next
End Function


PS И сдался вам этот хелпер...
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Aug 17, 2010 15:41    Post subject: Reply with quote

Имеем WSH.ExpandEnvironmentStrings("%TEMP%")
Предположим, путь в переменной среды сопоставлен с C:\DOCUME~1\USERNAME\LOCALS~1\Temp.
Есть ли возможность перевести путь формата 8.3 в полный?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Aug 18, 2010 11:53    Post subject: Reply with quote

Flasher wrote:
Есть ли возможность перевести путь формата 8.3 в полный?

Примерно так:
Code:
FolderPath = "C:\DOCUME~1\Default\LOCALS~1\Temp"
MsgBox CreateObject("Shell.Application").NameSpace(FolderPath).Self.Path

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Aug 18, 2010 12:43    Post subject: Reply with quote

Batya
Благодарю, то, что надо! Smile
Code:
Set SA = CreateObject("Shell.Application")
TMP = WSH.ExpandEnvironmentStrings("%TEMP%")
Path = SA.NameSpace(TMP).Self.Path
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Oct 01, 2010 03:59    Post subject: Reply with quote

Ищу мягкий метод, который позволит менять местами выделенные файлы и папки в панелях с учётом совпадения некоторых по маске (без переименования), а также всё содержимое этих панелей. Пока безрезультатно. Кто-нибудь может подсказать, куда смотреть?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 01, 2010 14:20    Post subject: Reply with quote

Flasher
Если имена совпадают, думаю, что без переноса в промежуточный каталог или предварительного переименования не обойтись.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Oct 01, 2010 14:23    Post subject: Reply with quote

Batya
Ну если тебе такие чудеса не известны, то придётся клепать с тем, что есть. Кстати, буду рад подключению, если времечко имеется. Wink
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Oct 06, 2010 02:41    Post subject: Reply with quote

В Helper есть функция SetTextToClip(Text) - отправить текст в буфер обмена. Есть ли возможность отправлять в буфер текст чем либо ещё в скриптовом формате? Дело в том, что при большом куске текста, эта функция не срабатывает.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Oct 06, 2010 04:39    Post subject: Reply with quote

Если из файла, то объект FileSystemObject > объект TextStream > метод ReadAll

А тут описывается способ при наличии IE в системе.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Oct 06, 2010 06:33    Post subject: Reply with quote

с FileSystemObject > объект TextStream > метод ReadAll у меня проблем нет. Я это уже освоил, но вот с IE наверно проблемы. Ниже описанный код, сохраненный в vbs - не работает. Нажимаю, что-то вроде бы происходит, но в буфер ничего не копируется!?
Code:
'Копирование текста в буфер обмена
strCopy = "Этот текст будет скопирован в буфера обмена"
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentWindow.clipboardData.setData "text", strCopy
objIE.Quit
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 Previous  1, 2, 3 ... 13, 14, 15 ... 25, 26, 27  Next
Page 14 of 27

 
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