1 (изменено: wildwolf007, 2014-02-02 10:03:02)

Тема: HTA: Функция запуска внешнего приложения с параметрами

Создал функцию в которой хочу использовать запуск внешнего приложения с переменными, но чето не получается не находит файл.

(Имя файла специально сделал с вопросиком так как бывают такие файлы попадаются)



dim RetCode
RetCode = SbersignCheck
MsgBox "Проверка " &RetCode

Function QwertyCheck()
dim var_1, var_2
var_1 = "D:\DATA\D\Server\D\SERVER\QwertyCheck.exe"
var_2 = "C:\!s9001218.rtf"
MsgBox var_2 & " " &var_1
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("var_1 /p var_2", 1, True) 
MsgBox "Обработка завершена! Код возврата - " & RetCode
QwertyCheck = RetCode
End Function

Кто что может подсказать ?

2

Re: HTA: Функция запуска внешнего приложения с параметрами

Я бейсик плохо знаю, но в JS "вопросики" другие...

3 (изменено: max7, 2014-02-02 02:30:16)

Re: HTA: Функция запуска внешнего приложения с параметрами

Да вы батенька юморист.

RetCode = WshShell.Run("var_1 /p var_2", 1, True) 

Должно быть как и строчкой выше

RetCode = WshShell.Run(var_1 & " /p " & var_2, 1, True) 

И вот здесь

var_1 = "D:\DATA\D\Server\D\SERVER\QwertyCheck.exe"

"D\SERVER" - так и должно быть задвоено?

4

Re: HTA: Функция запуска внешнего приложения с параметрами

wildwolf007, добавьте префикс языка в заголовок темы, как оговорено «Правилами…».

Имя файла специально сделал с вопросиком так как бывают такие файлы попадаются

Файлов «с вопросиком» не бывает — это запрещённый символ в именах файлов/папок. У Вас имя с разрешённым символом — восклицательным знаком.

5

Re: HTA: Функция запуска внешнего приложения с параметрами

max7 пишет:

Да вы батенька юморист.

RetCode = WshShell.Run("var_1 /p var_2", 1, True) 

Должно быть как и строчкой выше

RetCode = WshShell.Run(var_1 & " /p " & var_2, 1, True) 

И вот здесь

var_1 = "D:\DATA\D\Server\D\SERVER\QwertyCheck.exe"

"D\SERVER" - так и должно быть задвоено?

Это всего лишь пути размещения модулей если Вас смущает могу переписать все на другие пути, но суть вопроса не меняется от этого.

6 (изменено: wildwolf007, 2014-02-02 10:34:48)

Re: HTA: Функция запуска внешнего приложения с параметрами

Вот так когда прописываем все явным способом все работает:

Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("""D:\OSR\qwerty.exe"" /p C:\s9001218.rtf", 1, True) 
MsgBox "Обработка завершена! Код возврата - " & RetCode

Но когда начинаем использовать переменные подстановки все не работает:

RetCode = QwertyCheck
MsgBox "Код проверки = " &RetCode

Function QwertyCheck()
dim var_1, var_2
var_1 = "D:\OSR\qwerty.exe"
var_2 = "C:\s9001218.rtf"
MsgBox var_2 & " " &var_1
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("var_1 /p var_2", 1, True) 
MsgBox "Код проверки = " & RetCode
SbersignCheck = RetCode
End Function

Какую я допустил ошибку ?

7 (изменено: alexii, 2014-02-02 15:02:21)

Re: HTA: Функция запуска внешнего приложения с параметрами

alexii пишет:

Имя файла специально сделал с вопросиком так как бывают такие файлы попадаются

Файлов «с вопросиком» не бывает — это запрещённый символ в именах файлов/папок. У Вас имя с разрешённым символом — восклицательным знаком.

Я полностью с Вами согласен, но в жизни пользователи какие только имена не придумывают и какие символы только не используют. Может как-то можно произвести проверку на эти символы прежде чем они попадут в код обработки?

8

Re: HTA: Функция запуска внешнего приложения с параметрами

RetCode = WshShell.Run("var_1 /p var_2", 1, True)

Вы понимаете, что всё, что в кавычках, есть просто текст? >>

RetCode = WshShell.Run(var_1 & " /p " & var_2, 1, True)

9 (изменено: wildwolf007, 2014-02-02 14:45:41)

Re: HTA: Функция запуска внешнего приложения с параметрами

Наверное Ваше решение схоже с моим:

MsgBox chr(34)

Var_1 = "D:\\OSR\\sign_s\\qwerty.exe"
Var_2 = "F:\\" &"s9001218.rtf"
Var_0 = Var_1 &" " &"/p" &" " &Var_2

MsgBox Var_0
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run (Var_0,0,True)
MsgBox "Обработка завершена! Код возврата - " & RetCode

Ваше решение так же учту спасибо всем за помощь.

Почему используют 2 слеша ? А с одним ничего не получается.

10

Re: HTA: Функция запуска внешнего приложения с параметрами

Допустим у меня есть в коде работа с путем "D:\OSR\sign_s\qwerty.exe", но для обработки необходим путь следующего вида "D:\\OSR\\sign_s\\qwerty.exe". Как привести к такому ?

11

Re: HTA: Функция запуска внешнего приложения с параметрами

strPath = "D:\OSR\sign_s\qwerty.exe"
WScript.Echo Replace(strPath, "\", "\\")

12

Re: HTA: Функция запуска внешнего приложения с параметрами

Спасибо. Теперь вопрос исчерпан.

13

Re: HTA: Функция запуска внешнего приложения с параметрами

А как использовать WScript.Echo в HTA ?????

14 (изменено: wildwolf007, 2014-02-02 18:30:02)

Re: HTA: Функция запуска внешнего приложения с параметрами

Нашел другое решение:

sLine = "D:\\OSR\\sign_s\\"
UserSettingsLine = Split(sLine,"\")
MsgBox UserSettingsLine(0)
MsgBox UserSettingsLine(1)
MsgBox UserSettingsLine(2)

Ну и смысл понятен я думаю.
Спасибо всем кто помог в данном разделе у меня не осталось вопросов.

15

Re: HTA: Функция запуска внешнего приложения с параметрами

А как использовать WScript.Echo в HTA ?????

Напрямую — никак. prompt, alert, MsgBox.

+ открыть спойлер

Я ведь не случайно просил добавить префикс языка в заголовок темы. Исправил на «HTA:».

16

Re: HTA: Функция запуска внешнего приложения с параметрами

Прошу прощения не увидел.

Ну и вопросик:
UserSettingsLine = Split(sLine,"\") как определить размер массива UserSettingsLine ?

17

Re: HTA: Функция запуска внешнего приложения с параметрами

sLine = "1\2\3\4\5"
UserSettingsLine = Split(sLine,"\")
MsgBox UBound(UserSettingsLine) + 1

В данном случае будет «5» — т.е., с индексами от 0 до 4.


Давайте будем следовать правилам: «Один вопрос — одна тема», а не «Один автор — одна тема». Последний вопрос с данной темой никак не связан.

18 (изменено: wildwolf007, 2014-02-03 00:26:36)

Re: HTA: Функция запуска внешнего приложения с параметрами

alexii пишет:
sLine = "1\2\3\4\5"
UserSettingsLine = Split(sLine,"\")
MsgBox UBound(UserSettingsLine) + 1

В данном случае будет «5» — т.е., с индексами от 0 до 4.


Давайте будем следовать правилам: «Один вопрос — одна тема», а не «Один автор — одна тема». Последний вопрос с данной темой никак не связан.

Тема одна и та же просто одно из другого вытекает. Я могу создать новую тему просто тут описана сама суть, а суть как раз-таки в запуске внешнего приложения. Это все делается только для того что б наконец-таки запустить корректно это приложение.

Я согласен что будет 5 от 0 до 4х, но ведь как определить это 5 а ведь может быть и 6 а может и десять для опроса массива необходимо знать размерность, а откуда его знать Split не выдает таких данных. Или применить Dictionary?

19

Re: HTA: Функция запуска внешнего приложения с параметрами

alexii пишет:

MsgBox UBound(UserSettingsLine) + 1