Замена разделителя в параметрах, при создании кнопки
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Замена разделителя в параметрах, при создании кнопки Author: ADWizard PostPosted: Tue May 25, 2021 13:48
    —
Всем привет! Есть программа которая занимается копированием. Из командной строки запускается так
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

#2:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue May 25, 2021 14:29
    —
ADWizard
Во-первых, не очень понятно, зачем в TC для банального копирования (хоть одного объекта, хоть нескольких выделенных) из активной панели в неактивную понадобилась какая-то утилита, о которой я, например, не имею ни малейшего понятия (об используемым в ней синтаксисе и о том, чем вам не угодил пробел как разделитель, соответственно, тоже). Этот самый пробел на точку с запятой в стандартном функционале TC по передаче списка выделенных файлов в командную строку вы не замените никак (кроме как руками в самой строке, естественно).
Во-вторых (это уже по форме), согласно правилам форума в конце предложений должны ставиться точки, а ненужные пустые строки сообщения не украшают.
Недочёты в обеих кнопках не комментирую, поскольку гораздо больше меня занимает вопрос: зачем это всё вообще нужно делать в программе, которая сама по себе предназначена для нормального копирования файлов?

#3:  Author: ADWizard PostPosted: Tue May 25, 2021 15:40
    —
Avada
Какое радушие. Слегка поправил оформление спасибо за указанные недочет. Коды кнопок даны для облегчения восприятия, не более того.
Далее по ответу. Не совсем понятно почему вы должны понимать и тем более знать эту программу (синтаксис которой я явно указан). Лично мне все равно какой разделитель, а вот этой программе нет. Ну и последнее, не обязательно было писать такой опус, раз ваш ответ ограничивается единственным предложением по теме
Quote:
Этот самый пробел на точку с запятой в стандартном функционале TC по передаче списка выделенных файлов в командную строку вы не замените никак (кроме как руками в самой строке, естественно).

За ответ, спасибо.

#4:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue May 25, 2021 16:16
    —
ADWizard
Вопросы мои совершенно разумны и логичны для тематического форума по Total Commander в силу самой специфики этой программы. А предложения, возможно, последовали бы и другие (скажем, с какими-то вариантами сторонней автоматизации), если бы вы предпочли форму более конструктивного диалога и уточнили саму задачу безотносительно к утилите. Впрочем, не хотите ничего пояснять — ваше дело.

#5:  Author: ADWizard PostPosted: Tue May 25, 2021 16:48
    —
Утилита написана на заказ во времена царя гороха. Имеет более 500 настроек копирования (ТС такое не под силу), имеет GUI и как бонус умеет работать с командной строкой (формат который я указал). К сожалению нет возможности переопределить командную строку т.к. ни конторы которая её писала, ни исходники не сохранились. Хотелка прикрутить утилиту к ТС реализована на 50%, на 100% не дано из-за указанного выше. Се-ля-ви. 50% тоже не плохо, хоть и накладывает ряд ограничений.

#6:  Author: sa PostPosted: Tue May 25, 2021 17:01
    —
ADWizard
Может, попробовать для 2-9 выделенных файлов суррогатный вариант, в котором %P%S заменить на %C1;%C2;%C3;%C4;%C5;%C6;%C7;%C8;%C9?
Не знаю, как сработает утилита, если выделено будет меньше 9 файлов: там в параметрах вылезут лишние ;.

#7:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue May 25, 2021 18:04
    —
ADWizard
Более 500 настроек копирования — это звучит крайне интригующе. А посмотреть сие сокровище можно или на его распространение наложены ограничения?

#8:  Author: ADWizard PostPosted: Tue May 25, 2021 18:05
    —
Спасибо за совет. Первое конструктивное предложение.
Проверил, работает но странно. Если исходные пути не содержат пробелов, то копируется нормально, если содержат, то не копируется. При этом одиночный каталог/файл копируется в любом случае.

Добавлено спустя 2 минуты:

Quote:
А посмотреть сие сокровище можно или на его распространение наложены ограничения?

К сожалению вы совершенно правы, наложено ограничение, т.к. за этот продукт были плачены хорошие деньги.

#9:  Author: sa PostPosted: Tue May 25, 2021 18:12
    —
ADWizard wrote:
Если исходные пути не содержат пробелов, то копируется нормально, если содержат, то не копируется.

Из-за кавычек, наверное, в которые TC заключает имена с пробелами…

#10:  Author: Skif_off PostPosted: Tue May 25, 2021 19:28
    —
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"

#11:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 25, 2021 21:13
    —
Avada wrote:
Более 500 настроек копирования — это звучит крайне интригующе. А посмотреть сие сокровище можно или на его распространение наложены ограничения?
Я знаю подобный продукт - Xxcopy, о котором я написал статью.
Я, любимый wrote:
Количество ключей точному подсчету не поддается, по моей оценке - около двухсот
Программа распространяется свободно, но с недавних пор проект закрыт. Что, впрочем, не мешает программой пользоваться.
Работа со списками, разумеется, есть, но для обработки и использования в ТС требуется легкая обработка скриптами, что я неоднократно и делал, например, так.
В запрашиваемом случае, пожалуй, тоже без скриптов не обойтись...

#12:  Author: ADWizard PostPosted: Wed May 26, 2021 09:35
    —
Quote:
Из-за кавычек, наверное, в которые TC заключает имена с пробелами…

Увы нет, пробовал удаляя их вручную в диалоге.

Skif_off
Спасибо, но увы ошибка
Code:

Ошибка
строка 3
символ 10
предполагается наличие окончания инструкции
код 800а0401

#13:  Author: sa PostPosted: Wed May 26, 2021 10:19
    —
ADWizard wrote:
Увы нет, пробовал удаляя их вручную в диалоге.

А утилита копирует нормально несколько файлов с путями, содержащими пробелы (без привязки к способу указания параметров)?

#14:  Author: ADWizard PostPosted: Wed May 26, 2021 11:51
    —
sa
Да, вот такой бат вполне себе работает.
Code:
c:\copy64.exe  "D:\tm p1\EStaff;D:\tm p1\cer";"D:\tm p1\tmp.reg"  "C:\tmp\1"
pause


Добавлено спустя 4 минуты:

Нашел где проблема, после публикации кода.
Утилита каталоги воспринимает в общих кавычках, а файлы должны быть в персональных. Да уж. похоже тут все интересней чем предполагалось Confused

Добавлено спустя 10 минут:

Skif_off
Quote:
Но не умеет работать со списком файлов?

Почему же, умеет, при том не просто список, а создаёт целый профиль со всеми настройками сразу который достаточно загрузить. Просто хотелось подружить ТС и её.

После экспериментов с бат файлами выяснилось, что если в путях источника есть пробелы командная строка должна выглядеть так
Code:
c:\copy64.exe  "D:\Источник 1\папка;D:\Источник 2\папка;D:\Источник 3\файл.ххх;"  "C:\Назначение\папка"

#15:  Author: sa PostPosted: Wed May 26, 2021 12:34
    —
ADWizard wrote:
если в путях источника есть пробелы командная строка должна выглядеть так

А с такой строкой
Code:
""D:\Источник 1\папка";"D:\Источник 2\папка";"D:\Источник 3\файл.ххх;""
не работает, случайно?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group