командная строка криво выполняется (или руки такие))

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

командная строка криво выполняется (или руки такие))

Сообщение Владимир »

Всем доброго! Поставил 7-zip. Задача - сделать zip-архив aaaa.zip файлов и директорий в директории C:\mysoft\proga\. Пишу в cmd

Код: Выделить всё

C:\Program Files\7-zip\7z.exe a -tZip "C:\aaaa.zip" -r "C:\mysoft\proga\*.*"

Все Ок, в архиве именно файлы и каталоги из C:\mysoft\proga\.
Делаю то же из софта через TProcess:

Код: Выделить всё

.....
AProcess.CommandLine:='C:\Program Files\7-zip\7z.exe a -tZip "C:\aaaa.zip" -r "C:\mysoft\proga\*.*"';
AProcess.Optoins:=AProcess.Options+[poWaitOnExit];
AProcess.Execute;
.....

Получаю архив, включающий не нужную мне директорию \proga !
p.s. ShellExecute дает тот же результат.
Чего присоветуете?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

у меня Ваш код отработал без ошибок. Lazarus 1.4RC2 Win10
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

Padre_Mortius писал(а):у меня Ваш код отработал без ошибок. Lazarus 1.4RC2 Win10

Спасибо, но как-то не полегчало. Вы использовали Shell или TProcess? И куда копать?
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

Поскольку путь к 7z.exe с пробелом, его тоже нужно заключить в кавычки.
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

Vapaamies писал(а):Поскольку путь к 7z.exe с пробелом, его тоже нужно заключить в кавычки.

Спасибо, попробовал - результат тот же...

Добавлено спустя 57 минут 42 секунды:
Re: командная строка криво выполняется (или руки такие) [РЕШЕНО]
Владимир писал(а):у меня Ваш код отработал без ошибок. Lazarus 1.4RC2 Win10

Я балда! Полагаю, что 7-Zip корректно работает, если расширение получаемого архива соответствует ключу -t, я же попытался получить архив с отличным от .zip расширением.
Это работает:

Код: Выделить всё

AProcess.CommandLine:='C:\Program Files\7-zip\7z.exe a -tZip "C:\aaaa.zip" -r "C:\mysoft\proga\*.*"';

А это - чудит:

Код: Выделить всё

AProcess.CommandLine:='C:\Program Files\7-zip\7z.exe a -tZip "C:\aaaa.odt" -r "C:\mysoft\proga\*.*"';
Ответить