Страница 1 из 2
Замена разделителя в параметрах, при создании кнопки
Добавлено: Вт май 25, 2021 12:48
ADWizard
Всем привет! Есть программа которая занимается копированием. Из командной строки запускается так
.
Пытаюсь создать кнопку для этой программы
Код: Выделить всё
TOTALCMD#BAR#DATA
"c:\Copy64.exe"
%P%N %T%N
c:\Copy64.exe
Copy64
c:\
-1
.
Кнопка работает и копирует текущий каталог/файл с одной панели на другую. Для копирования нескольких/выделенных элементов командная строка должна иметь вид
Код: Выделить всё
"prog1.exe" <source1 path;source2 path;....> <destination>
.
Сделал кнопку
Код: Выделить всё
TOTALCMD#BAR#DATA
"c:\Copy64.exe"
?%P%S "%T"
c:\Copy64.exe
Copy64
c:\
-1
.
Вывод получаю с разделителем пробел т.е.
"файл1" "файл2" "папка назначения", а нужен разделитель ';' т.е.
"файл1";"файл2" "папка назначения".
Подскажите, как этого добиться?
Добавлено: Вт май 25, 2021 13:29
Avada
ADWizard
Во-первых, не очень понятно, зачем в TC для банального копирования (хоть одного объекта, хоть нескольких выделенных) из активной панели в неактивную понадобилась какая-то утилита, о которой я, например, не имею ни малейшего понятия (об используемым в ней синтаксисе и о том, чем вам не угодил пробел как разделитель, соответственно, тоже). Этот самый пробел на точку с запятой в стандартном функционале TC по передаче списка выделенных файлов в командную строку вы не замените никак (кроме как руками в самой строке, естественно).
Во-вторых (это уже по форме), согласно
правилам форума в конце предложений должны ставиться точки, а ненужные пустые строки сообщения не украшают.
Недочёты в обеих кнопках не комментирую, поскольку гораздо больше меня занимает вопрос: зачем это всё вообще нужно делать в программе, которая сама по себе предназначена для нормального копирования файлов?
Добавлено: Вт май 25, 2021 14:40
ADWizard
Avada
Какое радушие. Слегка поправил оформление спасибо за указанные недочет. Коды кнопок даны для облегчения восприятия, не более того.
Далее по ответу. Не совсем понятно почему вы должны понимать и тем более знать эту программу (синтаксис которой я явно указан). Лично мне все равно какой разделитель, а вот этой программе нет. Ну и последнее, не обязательно было писать такой опус, раз ваш ответ ограничивается единственным предложением по теме
Этот самый пробел на точку с запятой в стандартном функционале TC по передаче списка выделенных файлов в командную строку вы не замените никак (кроме как руками в самой строке, естественно).
За ответ, спасибо.
Добавлено: Вт май 25, 2021 15:16
Avada
ADWizard
Вопросы мои совершенно разумны и логичны для тематического форума по Total Commander в силу самой специфики этой программы. А предложения, возможно, последовали бы и другие (скажем, с какими-то вариантами сторонней автоматизации), если бы вы предпочли форму более конструктивного диалога и уточнили саму задачу безотносительно к утилите. Впрочем, не хотите ничего пояснять — ваше дело.
Добавлено: Вт май 25, 2021 15:48
ADWizard
Утилита написана на заказ во времена царя гороха. Имеет более 500 настроек копирования (ТС такое не под силу), имеет GUI и как бонус умеет работать с командной строкой (формат который я указал). К сожалению нет возможности переопределить командную строку т.к. ни конторы которая её писала, ни исходники не сохранились. Хотелка прикрутить утилиту к ТС реализована на 50%, на 100% не дано из-за указанного выше. Се-ля-ви. 50% тоже не плохо, хоть и накладывает ряд ограничений.
Добавлено: Вт май 25, 2021 16:01
sa
ADWizard
Может, попробовать для 2-9 выделенных файлов суррогатный вариант, в котором %P%S заменить на %C1;%C2;%C3;%C4;%C5;%C6;%C7;%C8;%C9?
Не знаю, как сработает утилита, если выделено будет меньше 9 файлов: там в параметрах вылезут лишние ;.
Добавлено: Вт май 25, 2021 17:04
Avada
ADWizard
Более 500 настроек копирования — это звучит крайне интригующе. А посмотреть сие сокровище можно или на его распространение наложены ограничения?
Добавлено: Вт май 25, 2021 17:07
ADWizard
Спасибо за совет. Первое конструктивное предложение.
Проверил, работает но странно. Если исходные пути не содержат пробелов, то копируется нормально, если содержат, то не копируется. При этом одиночный каталог/файл копируется в любом случае.
Добавлено спустя 2 минуты:
А посмотреть сие сокровище можно или на его распространение наложены ограничения?
К сожалению вы совершенно правы, наложено ограничение, т.к. за этот продукт были плачены хорошие деньги.
Добавлено: Вт май 25, 2021 17:12
sa
ADWizard писал(а): Если исходные пути не содержат пробелов, то копируется нормально, если содержат, то не копируется.
Из-за кавычек, наверное, в которые TC заключает имена с пробелами…
Добавлено: Вт май 25, 2021 18:28
Skif_off
ADWizard писал(а):Имеет более 500 настроек копирования
Но не умеет работать со списком файлов?
Попробуйте завернуть в VBScript, типа
Код: Выделить всё
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"
Добавлено: Вт май 25, 2021 20:13
Вахмурка
Avada писал(а):Более 500 настроек копирования — это звучит крайне интригующе. А посмотреть сие сокровище можно или на его распространение наложены ограничения?
Я знаю подобный продукт -
Xxcopy, о котором я написал
статью.
Я, любимый писал(а):Количество ключей точному подсчету не поддается, по моей оценке - около двухсот
Программа распространяется свободно, но с недавних пор проект закрыт. Что, впрочем, не мешает программой пользоваться.
Работа со списками, разумеется, есть, но для обработки и использования в ТС требуется легкая обработка скриптами, что я неоднократно и делал, например,
так.
В запрашиваемом случае, пожалуй, тоже без скриптов не обойтись...
Добавлено: Ср май 26, 2021 08:35
ADWizard
Из-за кавычек, наверное, в которые TC заключает имена с пробелами…
Увы нет, пробовал удаляя их вручную в диалоге.
Skif_off
Спасибо, но увы ошибка
Код: Выделить всё
Ошибка
строка 3
символ 10
предполагается наличие окончания инструкции
код 800а0401
Добавлено: Ср май 26, 2021 09:19
sa
ADWizard писал(а):Увы нет, пробовал удаляя их вручную в диалоге.
А утилита копирует нормально несколько файлов с путями, содержащими пробелы (без привязки к способу указания параметров)?
Добавлено: Ср май 26, 2021 11:03
ADWizard
sa
Да, вот такой бат вполне себе работает.
Код: Выделить всё
c:\copy64.exe "D:\tm p1\EStaff;D:\tm p1\cer";"D:\tm p1\tmp.reg" "C:\tmp\1"
pause
Добавлено спустя 4 минуты:
Нашел где проблема, после публикации кода.
Утилита каталоги воспринимает в общих кавычках, а файлы должны быть в персональных. Да уж. похоже тут все интересней чем предполагалось
Добавлено спустя 10 минут:
Skif_off
Но не умеет работать со списком файлов?
Почему же, умеет, при том не просто список, а создаёт целый профиль со всеми настройками сразу который достаточно загрузить. Просто хотелось подружить ТС и её.
После экспериментов с бат файлами выяснилось, что если в путях источника есть пробелы командная строка должна выглядеть так
Код: Выделить всё
c:\copy64.exe "D:\Источник 1\папка;D:\Источник 2\папка;D:\Источник 3\файл.ххх;" "C:\Назначение\папка"
Добавлено: Ср май 26, 2021 11:34
sa
ADWizard писал(а):если в путях источника есть пробелы командная строка должна выглядеть так
А с такой строкой
Код: Выделить всё
""D:\Источник 1\папка";"D:\Источник 2\папка";"D:\Источник 3\файл.ххх;""
не работает, случайно?