View previous topic :: View next topic |
Author |
Message |
ADWizard
Joined: 25 May 2021 Posts: 8
|
(Separately) Posted: Tue May 25, 2021 13:48 Post subject: Замена разделителя в параметрах, при создании кнопки |
|
|
Всем привет! Есть программа которая занимается копированием. Из командной строки запускается так Code: | "prog1.exe" <source path> <destination> | .
Пытаюсь создать кнопку для этой программы Code: | TOTALCMD#BAR#DATA
"c:\Copy64.exe"
%P%N %T%N
c:\Copy64.exe
Copy64
c:\
-1
| .
Кнопка работает и копирует текущий каталог/файл с одной панели на другую. Для копирования нескольких/выделенных элементов командная строка должна иметь вид
Code: | "prog1.exe" <source1 path;source2 path;....> <destination> | .
Сделал кнопку
Code: | TOTALCMD#BAR#DATA
"c:\Copy64.exe"
?%P%S "%T"
c:\Copy64.exe
Copy64
c:\
-1
| .
Вывод получаю с разделителем пробел т.е.
"файл1" "файл2" "папка назначения", а нужен разделитель ';' т.е. "файл1";"файл2" "папка назначения".
Подскажите, как этого добиться?
Last edited by ADWizard on Tue May 25, 2021 15:19; edited 1 time in total |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10280 Location: Россия, Саратов
|
(Separately) Posted: Tue May 25, 2021 14:29 Post subject: |
|
|
ADWizard
Во-первых, не очень понятно, зачем в TC для банального копирования (хоть одного объекта, хоть нескольких выделенных) из активной панели в неактивную понадобилась какая-то утилита, о которой я, например, не имею ни малейшего понятия (об используемым в ней синтаксисе и о том, чем вам не угодил пробел как разделитель, соответственно, тоже). Этот самый пробел на точку с запятой в стандартном функционале TC по передаче списка выделенных файлов в командную строку вы не замените никак (кроме как руками в самой строке, естественно).
Во-вторых (это уже по форме), согласно правилам форума в конце предложений должны ставиться точки, а ненужные пустые строки сообщения не украшают.
Недочёты в обеих кнопках не комментирую, поскольку гораздо больше меня занимает вопрос: зачем это всё вообще нужно делать в программе, которая сама по себе предназначена для нормального копирования файлов? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
ADWizard
Joined: 25 May 2021 Posts: 8
|
(Separately) Posted: Tue May 25, 2021 15:40 Post subject: |
|
|
Avada
Какое радушие. Слегка поправил оформление спасибо за указанные недочет. Коды кнопок даны для облегчения восприятия, не более того.
Далее по ответу. Не совсем понятно почему вы должны понимать и тем более знать эту программу (синтаксис которой я явно указан). Лично мне все равно какой разделитель, а вот этой программе нет. Ну и последнее, не обязательно было писать такой опус, раз ваш ответ ограничивается единственным предложением по теме
Quote: | Этот самый пробел на точку с запятой в стандартном функционале TC по передаче списка выделенных файлов в командную строку вы не замените никак (кроме как руками в самой строке, естественно). |
За ответ, спасибо. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10280 Location: Россия, Саратов
|
(Separately) Posted: Tue May 25, 2021 16:16 Post subject: |
|
|
ADWizard
Вопросы мои совершенно разумны и логичны для тематического форума по Total Commander в силу самой специфики этой программы. А предложения, возможно, последовали бы и другие (скажем, с какими-то вариантами сторонней автоматизации), если бы вы предпочли форму более конструктивного диалога и уточнили саму задачу безотносительно к утилите. Впрочем, не хотите ничего пояснять — ваше дело. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
ADWizard
Joined: 25 May 2021 Posts: 8
|
(Separately) Posted: Tue May 25, 2021 16:48 Post subject: |
|
|
Утилита написана на заказ во времена царя гороха. Имеет более 500 настроек копирования (ТС такое не под силу), имеет GUI и как бонус умеет работать с командной строкой (формат который я указал). К сожалению нет возможности переопределить командную строку т.к. ни конторы которая её писала, ни исходники не сохранились. Хотелка прикрутить утилиту к ТС реализована на 50%, на 100% не дано из-за указанного выше. Се-ля-ви. 50% тоже не плохо, хоть и накладывает ряд ограничений. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2597
|
(Separately) Posted: Tue May 25, 2021 17:01 Post subject: |
|
|
ADWizard
Может, попробовать для 2-9 выделенных файлов суррогатный вариант, в котором %P%S заменить на %C1;%C2;%C3;%C4;%C5;%C6;%C7;%C8;%C9?
Не знаю, как сработает утилита, если выделено будет меньше 9 файлов: там в параметрах вылезут лишние ;. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10280 Location: Россия, Саратов
|
(Separately) Posted: Tue May 25, 2021 18:04 Post subject: |
|
|
ADWizard
Более 500 настроек копирования — это звучит крайне интригующе. А посмотреть сие сокровище можно или на его распространение наложены ограничения? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
ADWizard
Joined: 25 May 2021 Posts: 8
|
(Separately) Posted: Tue May 25, 2021 18:05 Post subject: |
|
|
Спасибо за совет. Первое конструктивное предложение.
Проверил, работает но странно. Если исходные пути не содержат пробелов, то копируется нормально, если содержат, то не копируется. При этом одиночный каталог/файл копируется в любом случае.
Добавлено спустя 2 минуты:
Quote: | А посмотреть сие сокровище можно или на его распространение наложены ограничения? |
К сожалению вы совершенно правы, наложено ограничение, т.к. за этот продукт были плачены хорошие деньги. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2597
|
(Separately) Posted: Tue May 25, 2021 18:12 Post subject: |
|
|
ADWizard wrote: | Если исходные пути не содержат пробелов, то копируется нормально, если содержат, то не копируется. |
Из-за кавычек, наверное, в которые TC заключает имена с пробелами… |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Tue May 25, 2021 19:28 Post subject: |
|
|
ADWizard wrote: | Имеет более 500 настроек копирования |
Но не умеет работать со списком файлов?
Попробуйте завернуть в VBScript, типа
Code: | Set WshShell = CreateObject("WScript.Shell")
Dim iMax = WScript.Arguments.Count - 1
Dim sList = """" & WScript.Arguments.Item(0) & """"
For iCount = 1 to iMax
sList = sList & ";""" & WScript.Arguments.Item(iCount) & """"
Next
WshShell.Run """C:\Copy64.exe"" " & sList & " """ & WScript.Arguments.Item(iMax + 1) & """", 1, False |
Сохранить как, например, Copy64.vbs, параметры те же - %P%S "%T" |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Tue May 25, 2021 21:13 Post subject: |
|
|
Avada wrote: | Более 500 настроек копирования — это звучит крайне интригующе. А посмотреть сие сокровище можно или на его распространение наложены ограничения? | Я знаю подобный продукт - Xxcopy, о котором я написал статью. Я, любимый wrote: | Количество ключей точному подсчету не поддается, по моей оценке - около двухсот | Программа распространяется свободно, но с недавних пор проект закрыт. Что, впрочем, не мешает программой пользоваться.
Работа со списками, разумеется, есть, но для обработки и использования в ТС требуется легкая обработка скриптами, что я неоднократно и делал, например, так.
В запрашиваемом случае, пожалуй, тоже без скриптов не обойтись... _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
ADWizard
Joined: 25 May 2021 Posts: 8
|
(Separately) Posted: Wed May 26, 2021 09:35 Post subject: |
|
|
Quote: | Из-за кавычек, наверное, в которые TC заключает имена с пробелами… |
Увы нет, пробовал удаляя их вручную в диалоге.
Skif_off
Спасибо, но увы ошибка
Code: |
Ошибка
строка 3
символ 10
предполагается наличие окончания инструкции
код 800а0401 |
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2597
|
(Separately) Posted: Wed May 26, 2021 10:19 Post subject: |
|
|
ADWizard wrote: | Увы нет, пробовал удаляя их вручную в диалоге. |
А утилита копирует нормально несколько файлов с путями, содержащими пробелы (без привязки к способу указания параметров)? |
|
Back to top |
|
|
ADWizard
Joined: 25 May 2021 Posts: 8
|
(Separately) Posted: Wed May 26, 2021 11:51 Post subject: |
|
|
sa
Да, вот такой бат вполне себе работает.
Code: | c:\copy64.exe "D:\tm p1\EStaff;D:\tm p1\cer";"D:\tm p1\tmp.reg" "C:\tmp\1"
pause |
Добавлено спустя 4 минуты:
Нашел где проблема, после публикации кода.
Утилита каталоги воспринимает в общих кавычках, а файлы должны быть в персональных. Да уж. похоже тут все интересней чем предполагалось
Добавлено спустя 10 минут:
Skif_off
Quote: | Но не умеет работать со списком файлов? |
Почему же, умеет, при том не просто список, а создаёт целый профиль со всеми настройками сразу который достаточно загрузить. Просто хотелось подружить ТС и её.
После экспериментов с бат файлами выяснилось, что если в путях источника есть пробелы командная строка должна выглядеть так
Code: | c:\copy64.exe "D:\Источник 1\папка;D:\Источник 2\папка;D:\Источник 3\файл.ххх;" "C:\Назначение\папка" |
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2597
|
(Separately) Posted: Wed May 26, 2021 12:34 Post subject: |
|
|
ADWizard wrote: | если в путях источника есть пробелы командная строка должна выглядеть так |
А с такой строкой Code: | ""D:\Источник 1\папка";"D:\Источник 2\папка";"D:\Источник 3\файл.ххх;"" | не работает, случайно? |
|
Back to top |
|
|
|