Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   изменение скрипта из формы (https://javascript.ru/forum/misc/64530-izmenenie-skripta-iz-formy.html)

discol 18.08.2016 08:20

изменение скрипта из формы
 
На js у меня опыта мало. Даже на толковый диалог не хватит. Но очень хочется осуществить идею.

Вот собственно простенький скрипт.

<script language="JScript">
function run() {
pro1 = "file\\goo1.cmd";
pro2 = "file\\goo2.cmd";
WSH = new ActiveXObject("WScript.Shell");
WSH.run(pro1),1,true;
WSH.run(pro2),1,true;
}
</script>
<input type="button" value="Push" onclick="run()" />


pro1 = "file\\goo1.cmd"; Будет большая база от pro1 до pro101
но мне не надо их все выполнять. Хотелось бы иметь возможность выбирать через форму что запускать. То есть фильтровать через форму
WSH.run(pro1),1,true;
WSH.run(pro7),1,true;
WSH.run(pro9),1,true;
WSH.run(pro25),1,true;
WSH.run(pro33),1,true;
как то так.
Если это возможно, может подскажите как это сделать? Буду очень благодарен.

laimas 18.08.2016 08:36

Вы используете оболочку ОС, так что вам мешает получить список файлов каталога из которого и выбирать на запуск нужное?

discol 18.08.2016 09:10

я не знаю как это реализовать. Сколько не пытаюсь представить, ничего не получается. А методом тыка вымотался уже. Я как бы немного в php шарю, сайты несложные делал, программки типа отдела кадров, но опять таки на Mysql. А вот в оболочку ОС месяца нет как залез. Опыта работы с ОС почти вообще нет.

discol 18.08.2016 09:27

С другой стороны, что касается списка файлов, то проблемы действительно нет. Все файлы и пути к ним будут прописаны внутри скрипта.
pro1 = "file\\goo1.cmd";
pro2= "file\\goo2.cmd";
и так далее.
А вот
WSH.run(pro1),1,true;
WSH.run(pro2),1,true;
я прописать все не могу. Мне не надо все 101 cmd запускать. Мне надо через форму вносить изменения в скрипт; - Какие cmd запускать а какие нет выбирая через форму. То есть из формы прямо в скрипт добавлять WSH.run(pro1),1,true; WSH.run(pro1),5,true;
WSH.run(pro1),21,true; Когда я нажму button все указанные cmd должны выполниться, а не указанные остаться не выполненными.

laimas 18.08.2016 09:44

Есть папка с файлами, пути к ним получить так:

<ul id="fl"></ul>
<script>
var fso = new ActiveXObject("Scripting.FileSystemObject"),
    folder = fso.GetFolder("ИМЯ ДИСКА:\\ПАПКА"),
    files = new Enumerator(folder.Files), 
    f = '';

    for(; !files.atEnd(); files.moveNext()) f += '<li>' + files.item().Path + '</li>';
    
    document.getElementById('fl').innerHTML = f; 
</script>


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

discol 18.08.2016 10:04

Да у меня конечно есть папка file\\ но в ней есть и папки под папки и в некоторых случаях есть еще под папки. И где-то снаружи или глубоко лежат cmd.
Все пути к ним прописываются в начале функции
pro1 = "file\\folder\\goo1.cmd";
pro1 = "file\\goo1.cmd";
pro1 = "file\\folder45\\goo45.cmd";
pro1 = "file\\goo16.cmd";
pro1 = "file\\goo18.cmd";
и так прописаны все пути в начале скрипта.
А в нижней части скрипта
будут добавляться только те cmd, которые выбраны формой.
WSH.run(pro1),1,true; запустит на исполнение pro1 = "file\\goo1.cmd";
WSH.run(pro2),1,true; запустит на исполнение pro2 = "file\\goo2.cmd";
а WSH.run(pro3),1,true; не запустится потому что не выбран формой и не будет потому добавлен в скрипт.
Потом нажимаем buttom onclick="run() и выполняем все указанные cmd за раз. Я не могу понять как из формы можно внести изменения непосредственно в сам скрипт, чтобы выборка работала?

laimas 18.08.2016 10:08

Цитата:

Сообщение от discol
Да у меня конечно есть папка file\\ но в ней есть и папки под папки и в некоторых случаях есть еще под папки. И где-то снаружи или глубоко лежат cmd.

Вы же не веб страницу используете, а либо VBS или HTA-приложение. В его рамках можно что угодно делать, в том числе рекурсивно обойти каталог и получить файлы по маске.

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

discol 18.08.2016 10:10

может есть иной тип исполнения, но я в js не силен. На php вопросов бы не было. Там элементарно. А здесь я не знаю как поступить. В тем более из вне залезть в скрипт.

warren buffet 18.08.2016 10:11

Цитата:

Сообщение от discol
выбирать через форму что запускать.

Забудь про интерфейсы в скриптах винды, их по-видимому никогда не будет. Все что ты можешь - вызывать диалоги. Например выбора папки или файла.

warren buffet 18.08.2016 10:13

Вот диалог выбора файла

var GetFileName =function( myDir, myFilter ) {

  var objDialog=WScript.CreateObject( "UserAccounts.CommonDialog" );
  
  objDialog.InitialDir = myDir || WScript.CreateObject( "WScript.Shell" ).SpecialFolders( "MyDocuments" );

  objDialog.Filter = myFilter || "All files|*.*";

  if(objDialog.ShowOpen())  return objDialog.FileName;

};

var f=GetFileName();

WScript.Echo('file: '+f); /* это замени на полезный код */


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

discol 18.08.2016 10:24

Это большая проблема, все перетрусить и подготовить список. Да я использую hta, а использую я не только cmd но и vbs и bat. И проблема в том что некоторые vbs запускают cmd, только в том случае если лежат с cmd в одной папке, иначе cmd не запускается корректно и еще много других нюансов. Почему vbs запускает cmd? Потому что иногда требуются права администратора и приходится через vbs имитировать нажатия клавиш. Или при добавлении в hosts некоторых параметров из далека не удается запускать cmd. Короче каждая папка отдельная тема.
Вывалить все в одну папку - там я затеряюсь на месяцы.

laimas 18.08.2016 10:27

Цитата:

Сообщение от discol
может есть иной тип исполнения

А зачем вам иной, если вы хотите запустить несколько файлов?
Не понимаю вас. Зайдите лучше на этот форум, там есть все, что вам нужно.

discol 18.08.2016 10:31

А куда вставлять ваши скрипты. В HTA они не работают

laimas 18.08.2016 10:36

Цитата:

Сообщение от discol
А куда вставлять ваши скрипты. В HTA они не работают

Ни куда не вставлять их, этот засранец на форуме просто чешет языком, копирует скрипты чужие не понимая их. Он даже не удосужился заодно и прочесть, копируя этот код, что UserAccounts.CommonDialog в Windows 7 все равно работать не будет.

Я вам дал ссылку на форум посвященный скриптам для работы именно в ОС, думаю почитав там, вы измените свое представление о решении задачи. Данный форум это в основном JS рамках веб.

warren buffet 18.08.2016 10:38

Припоминаю что JScript и VBScript должны работать в ишаке точно. Насчет всех остальных браузеров берут сомнения.

warren buffet 18.08.2016 10:40

Цитата:

Сообщение от laimas
UserAccounts.CommonDialog в Windows 7

Ну это специально для любителей седьмой видны очевидно предусмотрено. Лол.

warren buffet 18.08.2016 10:42

Цитата:

Сообщение от discol
В HTA они не работают

Еще раз. Никаких окон для скриптинга в Винде никогда не было и не будет. Интеграция с веб-страницей возможна скорее всего только в Ишаке. Это значит твои скрипты могут работать либо через командную строку, либо через файлы. Ну или скажем через екзель.

Ну и главное. Кто тебе мешает написать нормальную программу со всей нужной тряхомудией? Если нужны окна - делай exe файл. Это же элементарно.

discol 18.08.2016 10:55

Ну так я же не первый день этим вопросом занимаюсь. И та я был тоже.
Но чтобы не быть голословным и поверхностным я просмотрел несколько разделов и прочитал несколько статей. сожалению там ничего нет подходящего как и везде где я был до этого. По HTA информации очень мало. И она или никакая, то есть примитивная, либо слишком заумная. Так что я пока оставаясь с Вами в надежде на чудо.

discol 18.08.2016 10:56

Ну может быть вы и правы. Но ini файлы я еще в руках не держал и что с ними делать не представляю.

laimas 18.08.2016 10:57

Цитата:

Сообщение от warren buffet
Ну это специально для любителей седьмой видны очевидно предусмотрено. Лол.

Какой же ты все таки тупой.

Цитата:

Сообщение от warren buffet
делай exe файл. Это же элементарно.


Гений.... рассмешил.

warren buffet 18.08.2016 10:58

discol, если писать на js, то вместо ini запросто пользуй те же самые js. То есть в смысле изменить содержание скрипта этим же скриптом - идея легко осуществимая, но обычно так не делается. Обычно изменяемую часть пишут отдельным файлом, в котором запросто могут лежать данные в json (или в XML). У меня так для ФШ все скрипты работают.

laimas 18.08.2016 10:58

Цитата:

Сообщение от discol
По HTA информации очень мало.

Вы все еще тут топчитесь, а не форуме специализированном. :)

warren buffet 18.08.2016 11:01

Цитата:

Сообщение от laimas
Какой же ты все таки тупой.

Ну поменяй ту шнягу на c// и будет тебе счастье в твоей любимой седьмой винде.

laimas 18.08.2016 11:02

Цитата:

Сообщение от warren buffet
Ну поменяй ту шнягу на c//

Ты просто дурак.

warren buffet 18.08.2016 11:12

laimas, Зато ты не просто, а сложно. )))

discol 18.08.2016 11:15

Цитата:

Сообщение от warren buffet (Сообщение 425886)
Еще раз. Никаких окон для скриптинга в Винде никогда не было и не будет. Интеграция с веб-страницей возможна скорее всего только в Ишаке. Это значит твои скрипты могут работать либо через командную строку, либо через файлы. Ну или скажем через екзель.

Ну и главное. Кто тебе мешает написать нормальную программу со всей нужной тряхомудией? Если нужны окна - делай exe файл. Это же элементарно.

Может и элементарно. Только за месяц я уже изучил команд.стр частично vbs, частично hta, частично htm и я уже изрядно под вымотался. Казалось что вот оно решение уже всех проблем. И опять поиск с нуля.
Может быть можно решить по другому?
Я думал о варианте выборки с радио кнопками, но не понимаю опять таки как это сделать? На php все через value переменными передается, а здесь как передать путь к файлам через радио кнопки, и закончить все это buttom onclick не понимаю.
Может вы в этой комбинации мне сможете помочь? Здесь же можно не вносить изменения в сам скрипт А вынести процедуру за скрипт.

warren buffet 18.08.2016 11:21

Какой блин путь к кнопкам? Уточним ТЗ. Ты хочешь собрать из файлов список для автоматического последовательного безусловного открытия/запуска всех файлов из списка?

Чтобы сделать такой список, достаточно блокнота или екзеля. Ну или врезки слева проводника винды в окно приложения, из которого по кнопке будет заполняться справа список listview или вроде того. Собрал - сохранил под придуманным именем, типа пресета. Какого фига ты усложняешь тривиальную задачу?

warren buffet 18.08.2016 11:26

Например на php в старину писали include.php который сам включался include '.../foo/bar/include.php' в каждый файл желающий получить набор плюшек перечисленных в include.php. Позже стали запихивать нужные плюшки в конфиги, затем в модели. Чем твоя задача отличается от этой древности? Только тем, что тебе нужен интерфейс для сбора плюшек?

discol 18.08.2016 11:39

Мне как раз не нужно ни интерфейс ни плюшки. Я прекрасно со всем справляюсь. Но есть масса болванов для которых компьютер тоже что телевизор. Должен ловить четко и показывать идеально. И я с этими болванами имею дело. И я хочу себе и им облегчить эту задачу. Сделать работу за компом почти тривиальной как телевизор. Та как я вообще хочу свалить в другую область знаний, но при этом не оставить недопонимание со своими коллегами клиентами.

discol 18.08.2016 11:46

include.php и модели это прекрасное старое и молодое. Но причем здесь басни Крылова? Почему тогда не порассуждать о смерти, какая она в прошлом и сейчас. Кстати я в этом знаток. Смотрел ей глаза в глаза. Только я бы сейчас хотел услышать что то внятное и понятное мне на jscript. Если вы уж знатоки то? не трудна задача-то для знатока.

warren buffet 18.08.2016 11:51

По сформулированному мною ТЗ есть что добавить? Ну вот, значит бери свое ТЗ и делай по нему списки. А запускать файлы по списку без условий и проверок - это обычный цикл.

discol 18.08.2016 11:54

Может надо в форму все включить, чтобы onclick на радио кнопках раньше не срабатывал. Или переменные создать и как то их передать из скрипта в форму или какие нибудь идентификаторы нужны? Просто на самом деле по hta материала мало, а js изучать с нуля ради одной задачи усилия как то не соразмерны.

warren buffet 18.08.2016 11:54

Цитата:

Сообщение от discol
Но есть масса болванов для которых компьютер тоже что телевизор.

В таких случаях я отвечаю желающему потакать дуракам: в 21-м веке человек обязан уметь пользоваться мобильным телефоном, микроволновкой и компьютером. Времена меняются - требования к рабочим меняются. Если ты хочешь остановить время - ты его остановишь и окажешься в каменном веке вместе со своими болванами и с получкой каменного века.

warren buffet 18.08.2016 11:57

Тот, кто не считает себя обязанным соответствовать текущему моменту - увольняется. Все просто. Или как ты примешь на работу водителем автобуса человека без ВУ? Или на должность пилота авиалайнера - человека без лицензии пилота? Или программиста без мозгов? Понял?

Я знаю на что рассчитывают твои заказчики. На тупых, которым не надо будет платить. Так вот, такие заказчики и тебе хера лысого заплатят по той же схеме.

Если это какое-то АСУ ТП, то при чем тут компы и телевизоры?

discol 18.08.2016 11:57

Как это запускать без условий? Когда изначально сказано что выборка должна быть! Я для людей с примитивными понятиями работу делаю.

discol 18.08.2016 12:01

Цитата:

Сообщение от warren buffet (Сообщение 425923)
Тот, кто не считает себя обязанным соответствовать текущему моменту - увольняется. Все просто. Или как ты примешь на работу водителем автобуса человека без ВУ? Или на должность пилота авиалайнера - человека без лицензии пилота? Или программиста без мозгов? Понял?

Я знаю на что рассчитывают твои заказчики. На тупых, которым не надо будет платить. Так вот, такие заказчики и тебе хера лысого заплатят по той же схеме.

Ну то что ты шняга с высшим образованием видно с первого абзаца. ,Больше негде пообщаться? Некому шнягу твою слушать? Иди в коллекторы или лучше судебным приставом. Вот там твоя шняга будет востребована.

warren buffet 18.08.2016 12:01

Цитата:

Сообщение от discol
Может надо в форму все включить, чтобы onclick

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

warren buffet 18.08.2016 12:02

Цитата:

Сообщение от discol
изначально сказано что выборка должна быть

Вот как ему еще по-русски объяснять, если он понимает только онклики и радиобаттоны?

Когда список составлен, то проверять уже ничего не надо, так? Ну так составь этот список в блокноте для начала.

discol 18.08.2016 12:04

Мои заказчики, это мои знакомые, а не те кто мне платит. Просто я хочу отвязаться от них и от рутинных дел

discol 18.08.2016 12:07

Я просто на самом деле не представлял как все плохо. на http://javascript.ru/ даже вопрос с радио кнопками оказывается проблема. Извините я огорчен и удивлен.


Часовой пояс GMT +3, время: 01:56.