Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Передача параметров программе из командной строки

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Передача параметров программе из командной строки
Имя
Сообщение << Старые топики   Новые топики >>
Передача параметров программе из командной строки - 2008-05-21 16:23:27.546666   
ZneP

Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
Доброго дня


уже долго мучает такой вопрос. как из командной строки передать параметром путь к файлу, но при этом в пути есть пробелы

например

proga.exe c:\program files\111\…

в пути есть пробел и программа сразу выдает ошибку, что файл "c:\program" не найден.
Post #: 1
RE: Передача параметров программе из командной строки - 2008-05-21 16:51:22.070000   
Mkey

Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
в кавычки не пытался заключать?

proga.exe "c:\program files\111\…"
Post #: 2
RE: Передача параметров программе из командной строки - 2008-05-21 16:57:14.986666   
ZneP

Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
пытался, пишет тоже самое, только в начале еще кавычку добавляет
Post #: 3
RE: Передача параметров программе из командной строки - 2008-05-21 17:01:57.090000   
AdReNaL1Ne

Сообщений: 8027
Оценки: 350
Присоединился: 2005-09-11 06:38:05
Попробуй неполные DOS-имена (ну или как они там называются), т.е. указываешь первые 6 символов названия, а потом ~1
Post #: 4
RE: Передача параметров программе из командной строки - 2008-05-21 17:07:42.866666   
Mkey

Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
"C:\Program Files\WinRAR\Rar.exe" a "C:\Program Files\WinRAR\111.rar" "C:\Program Files\WinRAR\WinRAR.exe"

и с кавычками все работает отлично….
Post #: 5
RE: Передача параметров программе из командной строки - 2008-05-21 17:15:03.490000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
По-моему, тут такая заморочка: windows, в отличие от *nix, передаёт программе не массив строк-агрументов, а всю командную строку одной строкой. Соответственно, разные программы по-разному могут бить эту строку на отдельные агрументы. И если программа не умеет разбивать правильно, то наверное уже ничего не сделаешь.
Post #: 6
RE: Передача параметров программе из командной строки - 2008-05-21 17:37:58.893333   
ZneP

Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
Mkey

C:\Program Files\WinRAR>rar.exe a "d:\aaa bbb\1.rar" "d:\123 456\111.txt"

RAR 3.51 Авторские права © 1993-2005 Александр Рошал 7 Oct 2005
Зарегистрировано на имя: Eric Blanc

Невозможно создать d:\aaa bbb\1.rar
Системе не удается найти указанный путь.
C:\Program Files\WinRAR>
Post #: 7
RE: Передача параметров программе из командной строки - 2008-05-21 17:38:27.816666   
Mkey

Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
quote:

windows, в отличие от *nix, передаёт программе не массив строк-агрументов, а всю командную

кто Вам такое сказал?
Post #: 8
RE: Передача параметров программе из командной строки - 2008-05-21 17:40:15.973333   
ZneP

Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
quote:

Попробуй неполные DOS-имена (ну или как они там называются), т.е. указываешь первые 6 символов названия, а потом ~1

а если пробел после 3-го символа?
Post #: 9
RE: Передача параметров программе из командной строки - 2008-05-21 17:45:08.703333   
Mkey

Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
quote:

Mkey

C:\Program Files\WinRAR&gt;rar.exe a "d:\aaa bbb\1.rar" "d:\123 456\111.txt"

RAR 3.51 Авторские права © 1993-2005 Александр Рошал 7 Oct 2005
Зарегистрировано на имя: Eric Blanc

Невозможно создать d:\aaa bbb\1.rar
Системе не удается найти указанный путь.
C:\Program Files\WinRAR&gt;

quote:

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\&gt;"C:\Program Files\WinRAR\rar.exe" a "d:\aaa bbb\1.rar" "d:\123 456\111.txt"

RAR 3.71 Авторские права © 1993-2007 Александр Рошал 20 Sep 2007
Незарегистрированная копия (наберите RAR -? для вывода справки)

Незарегистрированная копия. Пожалуйста, зарегистрируйтесь.

Обновление архива d:\aaa bbb\1.rar

Обновление d:\123 456\111.txt OK
Готово

C:\&gt;

на d не забыли создать каталог 123 456 и положить туда файл 111.txt ?….
на d не забыли создать каталог aaa bbb ? ….

quote:

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Program Files\WinRAR&gt;rar.exe a "d:\aaa bbb\1.rar" "d:\123 456\111.txt"

RAR 3.71 Авторские права © 1993-2007 Александр Рошал 20 Sep 2007
Незарегистрированная копия (наберите RAR -? для вывода справки)

Незарегистрированная копия. Пожалуйста, зарегистрируйтесь.

Обновление архива d:\aaa bbb\1.rar

Обновление d:\123 456\111.txt OK
Готово

C:\Program Files\WinRAR&gt;
Post #: 10
RE: Передача параметров программе из командной строки - 2008-05-21 17:52:04.373333   
ZneP

Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
8|8|8|8|

quote:

на d не забыли создать каталог 123 456 и положить туда файл 111.txt ….

не забыли


quote:

на d не забыли создать каталог aaa bbb

забыли 8|


СПАСИБ БОЛЬШОЕ


ПС. странно, когда прогу писал, то кавычки не помогали, хотя я точно уверен что кавычки ставил и папки были созданы
Post #: 11
RE: Передача параметров программе из командной строки - 2008-05-21 17:58:36.433333   
Mkey

Сообщений: 3426
Оценки: 0
Присоединился: 2006-03-08 14:32:13
вот 100% работающий код
quote:

const ArcPass: String = ' m[f] -hp12345 -inul -y log.rar log\*.*';

……………………………………………..
GetDir(0,InstPatch); // путь установки твоей софтины


……………………………………………….
var
p1: String;
begin
p1:=ArcPass;
ShellExecute(Handle, nil, 'rar.exe', Pchar(p1), Pchar(InstPatch), SW_HIDE);


………………………………………
Post #: 12
RE: Передача параметров программе из командной строки - 2008-05-22 07:30:25.933333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Mkey
quote:

windows, в отличие от *nix, передаёт программе не массив строк-агрументов, а всю командную

кто Вам такое сказал?

msdn. GetCommandLine возвращает LPSTR.
Post #: 13
RE: Передача параметров программе из командной строки - 2008-05-22 14:08:30.363333   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
проверяй первый символ на наличие " и конкатенируй строки пока не встретится еще одна. правда вариант долговат

//GetCommandLine лучше )
Post #: 14
Страниц:  [1]
Все форумы >> [Прочее] >> Передача параметров программе из командной строки







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.