View previous topic :: View next topic |
Author |
Message |
Dimych
Joined: 01 Feb 2006 Posts: 27
|
(Separately) Posted: Mon May 12, 2008 01:35 Post subject: [Bug?] Неверная передача параметров из em_команды |
|
|
Понадобилось написать VB-скрипт с передачей из em_команды 2-х параметров "Исходный путь" и "Путь назначения".
Чтоб понять как передаются параметры, был использован следующий bat-файл:
Code: | @echo off
echo 1 param - [%1]
....
echo 9 param - [%9]
echo Press any key
pause
exit |
В первую очередь выяснилось, что TC НЕ заключает В кавычки автоматом у параматров %P и %T, если они содержат пробел(ы).
Теперь о проблеме. При задании в em_команде строки параметров в виде:
и находясь в панелях c:\Documents and Settings\ и c:\Program Files\, по команде на входе батника получил:
Code: | 1 param - [c:\Documents]
2 param - [and]
3 param - [Settings\" "c:\Program]
4 param - [Files\] |
Когда же создал кнопку в ButtonBar с аналогичными параметрами, на входе батника получил:
Code: | 1 param - ["c:\Documents and Settings\"]
2 param - ["c:\Program Files\"] | то есть правильно.
А когда подкорректировал em-команду:
(убрал последнюю кавычку), по команде (и по кнопке) на входе батника получил
Code: | 1 param - ["c:\Documents and Settings\"]
2 param - ["c:\Program Files\] |
Тоже нормальное поведение. Меня пока устроило, так как VBS сам очищает аргументы от кавычек.
Если же в строке параметров крайним справа или слева стоит параметр, который TC сам автоматически заключает в кавычки, то все параметры передаются нормально (напр. param=%N "%P" "%T").
P.S. Интересно, почему TC не заключает в кавычки содержание параметра %M с пробелам(и), а %N заключает?
WinXP Pro SP2, TC 7.03 |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue May 13, 2008 17:27 Post subject: |
|
|
С кавычками Гислер что-то перемудрил.
Например, если в параметрах указать %P%N слитно, то при наличии в этой конструкции пробелов, она будет самим TC заключена в кавычки.
С батниками вообще отдельная история. Только сегодня столкнулся с проблемой использования нескольких пар кавычек в параметрах.
К примеру, кнопка Code: | TOTALCMD#BAR#DATA
%ComSpec% /K
"%%windir%%\hh.exe" "%%windir%%\Help\fonts.chm"
%windir%\system32\shell32.dll
Test
-1
| выдает ошибку. Если же вместо вызова %ComSpec% /K вызвать VBS-скрипт Code: | For Each A In WScript.Arguments
MsgBox A
Next | с теми же параметрами, то все отработает нормально.
А указанная кнопка может нормально работать, только если убрать какую-нибудь (или все) пару кавычек (с учетом, что у меня %windir%=C:\Windows).
Однако, я сомневаюсь, что Гислер будет здесь что-то чинить. Иначе у многих может отвалиться функционал, использующий Гислеровские заморочки с кавычками. Максимум что можно попытаться добиться от автора TC - добавление в wincmd параметра, отключающего "умную" обработку кавычек. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
LocKtaR-o-DarK

Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Wed May 14, 2008 03:32 Post subject: |
|
|
Batya, можно победить
Code: | TOTALCMD#BAR#DATA
cmd
/k start "" "hh" "%%windir%%\Help\fonts.chm"
shell32.dll
Test |
_________________
 |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Wed May 14, 2008 10:43 Post subject: |
|
|
LocKtaR-o-DarK
Я не хочу ни кого "победить". Я привел пример некорректной работы с кавычками. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|