View previous topic :: View next topic |
Author |
Message |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Mon Jun 04, 2012 16:53 Post subject: |
|
|
MVV
Тут что-то позаковыристей надо. Я уже перепробовал много разных вариаций прежде чем писать на форуме.
В предложенном варианте не срабатывает даже вызов TCFS2 (даже если убрать всё что после &).
Насколько я понимаю, путь к самой первой команды (Hidcon.exe) в кавычки можно не брать, а вот всё остальное - расценивается как параметры и где-то кавычки или удвоения процентов нужны.
В вызове второй команды (после амперсанда) тоже не всё так просто.
Пробую просто открыть командную строку и запустить напрямую
Code: | "%commander_path%\Plugins\exe\TCFS2\TCFS2.exe" /ef tcm(508) & "%commander_path%\Plugins\exe\NirCmd\NirCmd.exe" sendkeypress shift+tab shift+tab home down |
Срабатывает только первая команда.
(Можно всё упростить, наделать кучу батников или вспомогательных команд на подобные двухярусные конструкциии, но хочется понять - как правильно записать именно в одну строку и где ставить censored кавычки). |
|
Back to top |
|
 |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Mon Jun 04, 2012 18:09 Post subject: |
|
|
LonerD
& понимает cmd, а не Тотал. Без вызова cmd.exe амперсанд ставить бестолку. Start первый же параметр в кавычках считает заголовком окна, попробуй start "" "%COMMANDER_PATH%... |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Mon Jun 04, 2012 18:42 Post subject: |
|
|
Вроде закавыка с кавычками решилась.
Вот так работает (без start и всё взять ещё в одни кавычки).
Code: | [em_Hello]
cmd=%commander_path%\Plugins\exe\Hidcon.exe cmd.exe /c ""%commander_path%\Plugins\exe\Nircmd\Nircmd.exe" speak text "Hello" & "%commander_path%\Plugins\exe\Nircmd\Nircmd.exe" speak text "Word"" |
Однако вот так конкретная команда не работает:
Code: | [em_TreeCopy_plugin]
cmd=%commander_path%\Plugins\exe\Hidcon.exe cmd.exe /c ""%commander_path%\Plugins\exe\TCFS2\TCFS2.exe" /ef tcm(508) & "%commander_path%\Plugins\exe\Nircmd\Nircmd.exe" sendkeypress shift+tab shift+tab home down"
menu=TreeCopy - copying files with full folder tree |
Я так понимаю, что дело в TCFS2.
TCFS2 вызывает диалог архивации, а потом, похоже, переключается на окно Тотала, и Nircmd посылает свои команды уже не окну диалога архивации, а непосредственно окну самого Тотала, находящегося на заднем плане.
(забавный момент - если вызвать консоль и ввести в ней несколько раз TCFS2.exe /ef tcm(508) , то в Тотале откроется несколько диалогов архивации, а при их закрытии получается крах Тотала). |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Mon Jun 04, 2012 21:08 Post subject: |
|
|
Да, точно, start же первый параметр в кавычках считает заголовком окна (хвала мелкомягким). И да, с амперсендом надо ещё в кавычки всё брать.
Quote: | Я так понимаю, что дело в TCFS2.
TCFS2 вызывает диалог архивации, а потом, похоже, переключается на окно Тотала, и Nircmd посылает свои команды уже не окну диалога архивации, а непосредственно окну самого Тотала, находящегося на заднем плане. |
TCFS2 ничего никуда не переключает, делать ей больше нечего. Попробуй те же яйца с TCMC.
Quote: | (забавный момент - если вызвать консоль и ввести в ней несколько раз TCFS2.exe /ef tcm(508) , то в Тотале откроется несколько диалогов архивации, а при их закрытии получается крах Тотала). |
Весело.  _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Mon Jun 04, 2012 22:10 Post subject: |
|
|
Quote: | Попробуй те же яйца с TCMC. |
Действительно. И точно так же вызываются множественные окна, приводящие к краху Тотала.
Странно, почему Nircmd посылает команды не активному окошку архивации, а неактивному Тоталовскому окошку. Заодно обнаружил ограничение Nircmd на количество эмуляций клавиатурных нажатий. Но это уже выходит за пределы данной темы.
До выяснения причин остановился на упрощённом варианте на основе одной программы.
Code: | cmd=%commander_path%\Plugins\exe\Nircmd\Nircmd.exe sendkeypress alt+f5 shift+tab shift+tab home down enter
cmd=%commander_path%\Plugins\exe\TCMC\TCMCWindow.exe "ttcmc=CMcm_PackFiles" "pause=20" "keybd={TAB}" "keybd={-}" "keybd={TAB}" "keybd={HOME}" "keybd={DOWN}" "keybd={ENTER}" |
|
|
Back to top |
|
 |
taravasya
Joined: 27 Mar 2010 Posts: 38
|
(Separately) Posted: Fri Feb 22, 2013 12:31 Post subject: |
|
|
Здравствуйте. Есть схожий вариант проблемы...
Кнопка №1
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\vba\pr_done.vbs
"%p%n\process.xml" "<code>\d+</code>" "<code>200</code>" "%L" "%Pdescript.ion" "В_ОБР" ""
%COMMANDER_PATH%\Multimedia\Revolution Icon 28.ico
Обрабатывается
%COMMANDER_PATH%\Plugins\cmd\
0
-1 |
Кнопка №2
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\photoshop\Start.exe
%P%S
%COMMANDER_PATH%\Multimedia\PSDrop.ico
Обработка заказов
%COMMANDER_PATH%\Plugins\exe\photoshop\
-1 |
Возможно ли как-то объединить эти две кнопки в одну? Что-бы действия указанные в ней, выполнились последовательно? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Feb 22, 2013 13:38 Post subject: |
|
|
taravasya
С ожиданием отработки нужно править скрипт. Как он оказался в папке Plugins\vba для меня остаётся секретом. Что это за плагин такой "vba"? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
taravasya
Joined: 27 Mar 2010 Posts: 38
|
(Separately) Posted: Fri Feb 22, 2013 13:41 Post subject: |
|
|
Flasher
Да я сам создал эту папку. Тотал настроен "портабельно". Всё что нужно распихал по папкам, что-бы не путаться.
Но это и не важно. Суть не в этом. Проблема в том, что у этих двух команд разные параметры. И даже файлы которые нужно обрабатывать внешними коммандами разные...
Возможно ли это как-то реализовать? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Feb 22, 2013 15:26 Post subject: |
|
|
taravasya wrote: | Да я сам создал эту папку. | Plugins ‡ Scripts
taravasya wrote: | Возможно ли это как-то реализовать? | Возможно. Править скрипт. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
taravasya
Joined: 27 Mar 2010 Posts: 38
|
(Separately) Posted: Tue Feb 26, 2013 14:05 Post subject: |
|
|
Ну это очевидно. *.exe, тоже вообщем то не плагины. Но я не захотел создавать лишних папок, и сложил всё "кастомное" в папку plugins.
Я в vbs не силён.. скрипт выполняемый из первой кнопки, мне сваяли здесь же(на этом форуме). Смогли бы Вы подсказать, что нужно добавить в скрипте?
Code: | '===============================================
' Замена текста в файле с помощью рег. выражений
'
' Параметры:
' {файл} {текст для поиска} {текст для замены}
'===============================================
Option Explicit
Dim FSO, F, Str1, Str2, Text
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
F = .Arguments(0)
Str1 = .Arguments(1)
Str2 = .Arguments(2)
End With
F = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F))
Text = FSO.OpenTextFile(F, 1).ReadAll
Text = RegExpReplace(Text, Str1, Str2)
FSO.OpenTextFile(F, 2).Write Text
Set FSO = Nothing
Dim FSOT, oTextFile, AllText, OTF, FileName, CommFile, CommLabel, CommLabelDel, BegFile, BegFileComm
Set FSOT = CreateObject("Scripting.FileSystemObject")
Set OTF = FSOT.OpenTextFile(WScript.Arguments(3), 1)
CommFile = WScript.Arguments(4)
CommLabel = WScript.Arguments(5)
CommLabelDel = WScript.Arguments(6)
AllText = ""
If FSOT.FileExists(CommFile) Then
Set oTextFile = FSOT.OpenTextFile(CommFile, 1)
On Error Resume Next 'Игнорируем ошибку, если файл пустой
AllText = oTextFile.ReadAll
On Error GoTo 0
oTextFile.Close
End If
Do While Not OTF.AtEndOfStream
FileName = OTF.ReadLine
If FSOT.FileExists(FileName) Then
FileName = FSOT.GetFile(FileName).Name
Else
FileName = FSOT.GetFolder(FileName).Name
End If
If InStr(1, FileName, " ", 1) > 0 Then
FileName = """" & FileName & """"
End If
BegFile = InStr(1, vbNewLine & AllText, vbNewLine & FileName & " ", 1)
If BegFile > 0 Then
BegFileComm = BegFile + Len(FileName) + 1
If InStr(1, Mid(AllText, BegFileComm, Len(CommLabelDel)), CommLabelDel, 1) > 0 Then
AllText = Left(AllText, BegFileComm - 1) & Mid(AllText, BegFileComm + Len(CommLabelDel))
'Удаление лишних пробелов
If Instr(BegFile, AllText, FileName & " ", 1) > 0 Then
AllText = Left(AllText, BegFileComm - 2) & Mid(AllText, BegFileComm)
End If
'Удаление пустых комментариев
If Instr(BegFile, AllText & vbNewLine, FileName & " " & vbNewLine) > 0 Then
AllText = Left(AllText, BegFile - 1) & Mid(AllText, BegFile + Len(FileName & " " & vbNewLine))
End If
'Удаление лишних концевых строк
If Right(AllText, Len(vbNewLine)) = vbNewLine Then
AllText = Left(AllText, Len(AllText) - Len(vbNewLine))
End If
Set oTextFile = FSOT.OpenTextFile(CommFile, 2)
oTextFile.Write AllText
oTextFile.Close
End If
End If
Loop
Set FSOT = CreateObject("Scripting.FileSystemObject")
Set OTF = FSOT.OpenTextFile(WScript.Arguments(3), 1)
CommFile = WScript.Arguments(4)
CommLabel = WScript.Arguments(5)
CommLabelDel = WScript.Arguments(6)
Do While Not OTF.AtEndOfStream
FileName = OTF.ReadLine
If FSOT.FileExists(FileName) Then
FileName = FSOT.GetFile(FileName).Name
Else
FileName = FSOT.GetFolder(FileName).Name
End If
If InStr(1, FileName, " ", 1) > 0 Then
FileName = """" & FileName & """"
End If
BegFile = InStr(1, vbNewLine & AllText, vbNewLine & FileName & " ", 1)
If BegFile > 0 Then
BegFileComm = BegFile + Len(FileName) + 1
If InStr(1, Mid(AllText, BegFileComm, Len(CommLabel)), CommLabel, 1) = 0 Then
AllText = Left(AllText, BegFileComm - 1) & CommLabel & " " & Mid(AllText, BegFileComm)
Set oTextFile = FSOT.OpenTextFile(CommFile, 2)
oTextFile.Write AllText
oTextFile.Close
End If
Else
Set oTextFile = FSOT.OpenTextFile(CommFile, 8, 2)
If Right(AllText, Len(vbNewLine)) <> vbNewLine Then
oTextFile.WriteLine
AllText = AllText & vbNewLine
End If
oTextFile.Write FileName & " " & CommLabel
oTextFile.Close
AllText = AllText & FileName & " " & CommLabel
End If
Loop
OTF.Close
Set oTextFile = Nothing
Set OTF = Nothing
Set FSOT = Nothing
WScript.Quit 0
'Функция замены с помощью регулярных выражений
Function RegExpReplace(pText, pFindStr, pNewStr)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = pFindStr
regEx.IgnoreCase = True
regEx.Global = True
RegExpReplace = regEx.Replace(pText, pNewStr)
Set regEx = Nothing
End Function |
Скрипт универсальный, для трёх разных кнопок. Его действие изменяется в зависимости от входных параметров. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Feb 26, 2013 14:17 Post subject: |
|
|
taravasya wrote: | мне сваяли здесь же(на этом форуме) | И кто автор? На форуме этого скрипта нет. Может, автора и попросить? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
taravasya
Joined: 27 Mar 2010 Posts: 38
|
(Separately) Posted: Tue Feb 26, 2013 14:22 Post subject: |
|
|
Тут сборная солянка. Часть скрипта от Batya, часть Ваша ))))). Возможно, что-то я ещё сам замудрил туда выбрав подходящую часть скрипта...
Добавлено спустя 6 минут:
Собственно, началось всё от сюда:
http://forum.wincmd.ru/viewtopic.php?p=61341 |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10420 Location: Россия, Саратов
|
(Separately) Posted: Tue Feb 26, 2013 14:42 Post subject: |
|
|
Тема перенесена из "Общих вопросов" в "Автоматизацию". _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Feb 26, 2013 15:09 Post subject: |
|
|
taravasya
А Start.exe списки понимает или только перечисленные файлы в строке?
И не лучше пофайлово редактировать - запускать? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
|
|
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
|