v7: Экранирование кавычек #770545


#0 by extrim-style
Подскажите, как экранировать кавычки для КомандаСистемы? Так работает: КомандаСистемы("""C:Program Files (x86)1cv828.2.19.106in1cv8.exe"" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf"); Добавляю параметр /C - не работает: КомандаСистемы("""C:Program Files (x86)1cv828.2.19.106in1cv8.exe"" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf /C""Параметр""");
#1 by extrim-style
Сделал через ЗапуститьПриложение. Но всё-равно интересует.
#2 by extrim-style
+ ЗапуститьПриложение не подходит, т.к. не ожидает завершения, поэтому вопрос в всё также актуален.
#3 by Fedor-1971
/C""Параметр"" - чему будет равен?
#4 by extrim-style
я не знаю. Как посмотреть? Pause не получается сделать. Окно закрывается.
#5 by Fedor-1971
запусти CMD и в него впиши строку с неэкранированными кавычками
#6 by extrim-style
В параметре хочу передать экранированную строку - "Любой Текст".
#7 by extrim-style
в случае КомандаСистемы в CMD попадает уже интерпретированная версия (две кавычки в одну). А как он её интерпретирует, у меня не получается посмотреть. А в исходной строке я ошибок не нахожу.
#8 by extrim-style
такая строка в CMD отрабатывает нормально: "C:Program Files (x86)1cv828.2.19.106in1cv8.exe" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf /C"Параметр" Мне её нужно правильно в КомандуСистемы вставить.
#9 by mingw
Пути возьми тоже в кавычки.
#10 by extrim-style
не помогло
#11 by mingw
Сделай
#12 by Ёпрст
КомандаСистемы(""""C:Program Files (x86)1cv828.2.19.106in1cv8.exe""" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf /C"""Параметр"""")
#13 by mingw
Точно же. Вспомнил эту фишку в 8ке с тройными кавычками. Давно не пользовался КомандаСистемы. Лет 5 уже.
#14 by sitex
Да можно еще: Сообщить (""++Символ+"")поизвращается
#15 by Chainsaw
какие тройные, пациент? Берем правильно расставленные кавычки из строки для cmd. По правилам синтаксиса 1С удваиваем их, чтобы поместить в строку. Добавляем слева и справа ограничивающие строку. Вставляем в вызов функции.
#16 by Смотрящий
/C""" + Параметр + """");
#17 by mingw
1cv8.exe""" ENTERPRISE
#18 by Chainsaw
всю строку показывай
#19 by extrim-style
вроде бы не помогло, сейчас перепроверю
#20 by mingw
см.
#21 by extrim-style
делаю СтрокаЗапуска="""C:Program Files (x86)1cv828.2.19.106in1cv8.exe"" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf /C""Параметр"""; Копирую строку из окна сообщений, вставляю в CMD - отрабатывает нормально.
#22 by extrim-style
4 3 3 4 кавычки - не работает, даже код нормально не сохраняется
#23 by sitex
см.
#24 by extrim-style
такой код сохраняется с ошибками в 1С
#25 by mingw
Паришь с кавычками. Не в тех местах. И что такое "Параметр"? "G:ПутьКБазеОбработка.epf" - каждый отдельный путь. В котором длинные и(или) русские имена. Лучше в кавычки.
#27 by romix
Чтобы не путаться, можно СтрЗаменить ....
#28 by solarcold
Был бы я Богом Программирования - создал бы такие штуки, как "технические кавычки" и "технические слеши", и прочие, чтобы они использовались исключительно в коде и никогда в тексте, и не было геморроя с их использованием.
#29 by extrim-style
спасибо, помогло. А одной строкой можно?
#30 by mingw
" и \
#31 by singlych
Зато так веселей.
#32 by extrim-style
+ нет, это не то, что мне нужно, т.к. не экранировано /c"Параметр"
#33 by extrim-style
+ запутался вконец...
#34 by Карупян
лучше писть одинаные кавычки, а потом заменть ' на " "
#35 by extrim-style
+ нет, это не подходит, т.к. мне нужно в твоём случае: но так не работает
#36 by extrim-style
я не хочу путаться, я хочу разобраться
#37 by extrim-style
может кто-нибудь подскажет, как мне окно cmd оставить на экране, чтобы посмотреть на результат транслирования?
#38 by Карупян
ОДинарная кавычка заменяется на двойную + открывающая и закрывающая кавычки
#39 by Карупян
в файл запиши или сообщить
#40 by sitex
pause в  cmd
#41 by extrim-style
в разве не так?
#42 by Карупян
или в отладчике можно посмотреть строки. А может у тебя /с не того алфавита?
#43 by extrim-style
КомандаСистемы("""C:Program Files (x86)1cv828.2.19.106in1cv8.exe"" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf /C""Параметр""" pause); cmd-окно появляется и исчезает
#44 by extrim-style
КомандаСистемы("""C:Program Files (x86)1cv828.2.19.106in1cv8.exe"" ENTERPRISE /F G:ПутьКБазе /RunModeManagedApplication /Execute G:ПутьКБазеОбработка.epf /C""Параметр""" >>D:1.txt); получаю пустой документ
#45 by extrim-style
в работает, а этот же код в КомандаСистемы не работает
#46 by Chainsaw
Короче. Сподвигли меня на эксперимент, блин. При запуске через КомандаСистемы, 1С  зовет командный интерпретатор и тупо отдает ему строку параметром /c То есть из строки КомандаСистемы("""C:Program Files (x86)1cv88.3.7.1759in1cv8.exe"" ENTERPRISE /RunModeManagedApplication /F D:ERP20"); Получается вменяемое и запускаемое cmd.exe /c "C:Program Files (x86)1cv88.3.7.1759in1cv8.exe" ENTERPRISE /RunModeManagedApplication /F D:ERP20 Если взять значение параметра D:ERP20 в кавычки, то башню сносит именно cmd.exe на определение параметров, что к чему относится. Он решает не рисковать и падает с ошибкой типа "C:Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом." Правильный путь решения - добавить еще две ограничивающие кавычки для cmd: Или аналогично для 1С Пробелы специально поставил, чтобы про тройные кавычки не трындели. Консалтеров развелось.
#47 by sitex
Вообще работает КомандаСистемы ("PAUSE 100");
#48 by sitex
:)
#49 by mingw
Не смог 3-мя кавычками? Только 5-ю сумел? ;)
#50 by Chainsaw
так даже надежней :) оно у тебя 5 лет назад тупо без параметров запускалось. Ты брал в кавычки путь к исполняемому файлу, а остальное милостью гейтса и нуралиева проскакивало
#51 by mingw
Проще файл .bat/cmd записать. И выполнить.
#52 by sitex
ага ;) тогда уж лучше создавать текст в 1С,которая потом создасть файл bat и потом его выполнит :-)
#53 by Chainsaw
как сильно частное решение В нищих конторах, которые дают заказы на написание своего софта, можно запросто нарваться на линуксовый тазик с /tmp смонтированным с noexec. Потому что админы.
#54 by Йохохо
читай вывод aa-status и парси
#55 by Chainsaw
чтобы просто запустить команду на выполнение которой у меня гарантировано есть права? Вы всегда так делаете? А зачем?
#56 by Йохохо
шутка была. Не шутка только в планах чрез пару месяцев
#57 by extrim-style
спасибо, помогло.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С