Как исполнить консольную команду? Затык. Или мозги отсырели. Имеется задание для компа в виде текстовой строки: "C:\Program Files (x86)\7-zip\7z.exe" x "D:\Bases8x\Расчёт ЗП за июнь 2015.xlsx" -oC:\Users\User\AppData\Local\Temp\TempXLSX\ * Через Пуск и консольный ввод этой строки все чудесно исполняется: 7z.exe запускается, ключи-команды кушает, файл раздербенивается куда и как надо во временный каталог. А из кода - никак. КомандаСистемы(стрКоманды); - не реагирует. И не ругается, что обидно. Т.е., каталог TempXLSX остается пустым. И как победить? V77 & Win7, если что. Пользователь User, само-собой, не привилегированный. |
Валера, в понедельник подними эту тему. Решу твой вопрос. У меня 7z - творит чудеса. И с МВД обменивается, и с ЦБ РФ, и с нашим фронт-офисом... И все это из 1С77. |
1-DeiMos > К 7z претензий нет. Претензия - к вызову из 1C77. Не к 8.х! К 7.7. И надо именно в среде Win7. Или w2008. х64 которые. |
может в батник(ну или чего-там) и его запускать? |
У мну тоже были проблемы из вызова из 1С77. Говорю жеж, напиши в понедельник. Из 77 че хошь тебе вызову. |
В среде 2008 R2 Server вроде работает уже тыщу лет... |
[quote=VZ;39874366]Пользователь User, само-собой, не привилегированный. [/quote] а попробовать от привилегированного? запустить 7.7 от лица администратора? по крайней мере, вопрос о привилегированности/непривилегированности сразу снимется - будет ясно, в этом причина или в чем-то другом. |
6-Блондинка в шок > Не, это вопрос принципиальный. Никто, даже я сам, не работает под админом. |
cmd /c "C:\Program Files (x86)\7-zip\7z.exe" x "D:\Bases8x\Расчёт ЗП за июнь 2015.xlsx" -oC:\Users\User\AppData\Local\Temp\TempXLSX\ * |
%cimspec% /c "C:\Program Files (x86)\7-zip\7z.exe" x "D:\Bases8x\Расчёт ЗП за июнь 2015.xlsx" -oC:\Users\User\AppData\Local\Temp\TempXLSX\ * |
9-smaharbA > CMD не хочется: не люблю мелькающих черных окон. А вот эта фигня что-то не собирпется: ScriptControl = createobject("MSScriptControl.ScriptControl"); ScriptControl.language="vbscript"; стр="function UnPack() |On Error Resume Next |Set WshShell = WScript.CreateObject(""WScript.Shell"") |WshShell.Run("+КоманднаяСтрока+",1,true) |if Err.Number = 0 then |UnPack = """" |Else | UnPack = err.Description |end if |end function"; // err.Description возвращает наименование ошибки ScriptControl.AddCode(стр); рез=ScriptControl.run("UnPack"); - грид, пропущен "|" Чтой-то вообще в грусти. Да и версия wsh ныне 5.8, а внятного описания различий от 5.6 найти не могу :( И вообще подзабыл уже... |
10-VZ > КомандаСистемы("CMD /C """"%ProgramFiles(x86)%\7-zip\7z.exe"" x ""E:\Bases8x\Расчёт ЗП за июнь 2015.7z"" -o""%temp%\TempXLSX\"" *""") ================================================ КоманднаяСтрока="CMD /C """"%ProgramFiles(x86)%\7-zip\7z.exe"" x ""E:\Bases8x\Расчёт ЗП за июнь 2015.7z"" -o""%temp%\TempXLSX\"" *"""; Шел = Новый COMОбъект("WScript.Shell"); Сообщить(Шел.Run("+КоманднаяСтрока+",1,Истина)); ============================================ %ProgramFiles(x86)% для 32-х разрядного 7-зип %ProgramW6432% для 64 разрядного 7-зип |
11-smaharbA > Сообщить(Шел.Run(КоманднаяСтрока,1,Истина)); |
Вот так у меня прекрасно работает [u]7za[/u]: Разархивация: ЗапускАрх = ?(Скавычками>0,"""","")+КаталогИБ()+"7za.exe"+?(Скавычками>0,"""","")+" x "+?(Скавычками>0,"""","")+ФормИмяФайлаДанных+?(Скавычками>0,"""","")+" -pПароль -o"+?(Скавычками>0,"""","")+ПутьВывода+?(Скавычками>0,"""","")+" -aoa -r -y -x!*"+?(Скавычками>0,"""","")+КаталогИмпорт+?(Скавычками>0,"""",""); //ЗапуститьПриложение(ЗапускАрх); WSHShell.Run(ЗапускАрх, 0, -1); Архивация: Скавычками=1; ЗапускАрх = ?(Скавычками>0,"""","")+КаталогИБ()+"7za.exe"+?(Скавычками>0,"""","")+" a "+?(Скавычками>0,"""","")+ФормИмяФайлаДанных+?(Скавычками>0,"""","")+" -aoa -pПароль "+?(Скавычками>0,"""","")+ИмяИмп+?(Скавычками>0,"""","")+"\ -r -y"; //ЗапуститьПриложение(ЗапускАрх); WSHShell.Run(ЗапускАрх, 0, -1); |
Хм. Распаковка xmsx - не самоцель. "Семерка" - не "восьмерка", с xmsl не работает, и работать никогда не будет. Напрямую, естественно. Только через жопу: распаковать, а потом парсить многочисленные xml. И только так. Кстати, не все обормотки на 8.2(3) кушают этот файл: некоторые затыкаются на анализе [юзерских] наименований листов ;) Завлекательные очень :) Кстати, конвертировать этот файл в более младшие версии - невозможно. Пробовал. И да, загружается он почти [b]15 минут[/b]. Офигеть, и не встать. Хотя у меня 8 Гб. И 64-х разрядная ось, как уже вы поняли. И выкрутасы (10) - не просто так, я хочу еще вылавливать ошибки выполнения: не дебагом же заниматься при эксплуатации. Документации по vsh у меня дофига, только - для вермии 5.6. А на нонешней команда WScript.Sleep [em]FormatNumber(mid(Time,inStr(lcase(LineTxt),"-t")+2))*1000[/em] (при Linetxt="-t5") вдруг перестала работать. В ХП работала, в Win7 - нет. |
Я не понял юмора... Ты вообще собираешься тeстить 7za, или я для кого тут писал зря? |
15-DeiMos > Спасибо, Дим, конечно. Так работает. Токо надо заменить 7za.exe на 7z.exe... |
Не рекомендую менять. Если у тебя вдруг заработало 7z, то не факт, что не продолжит глючить. Рекомендую поменять на 7za. ЗЫ: Спасибо не пью. С тебя ящик коньяка. |
17-DeiMos > Не могу поменять. Нет такого файла в дистрибутиве. Igor Pavlov исключил по каким-то соображениям. |
Ну и ладно. Работай с 7z. Если работает - то и хорошо. Вопрос решен? Тема закрыта? |
Текущее время: 09:56. Часовой пояс GMT +3. |