Как запустить js файл через node.js?

S10n4eg

Client
Регистрация
25.06.2014
Сообщения
186
Благодарностей
24
Баллы
18
Здравствуйте, подскажите пожалуйста, как запустить js файл через node.js ?
Есть у меня ярлык через который node.js запускается у него такие параметры - C:\Windows\System32\cmd.exe /k "C:\Program Files\nodejs\nodevars.bat"
Дальше уже в командной строке я выполняю команды:
cd C:\Users\Administrator\Desktop\index\index\index2
node index.js

А вот с помощью зенки не хватает знаний запустить файл index.js
Помогите пожалуйста)
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 765
Благодарностей
2 407
Баллы
113
Здравствуйте, подскажите пожалуйста, как запустить js файл через node.js ?
Есть у меня ярлык через который node.js запускается у него такие параметры - C:\Windows\System32\cmd.exe /k "C:\Program Files\nodejs\nodevars.bat"
Дальше уже в командной строке я выполняю команды:
cd C:\Users\Administrator\Desktop\index\index\index2
node index.js

А вот с помощью зенки не хватает знаний запустить файл index.js
Помогите пожалуйста)
Подкорректировал вариант отсюда или отсюда, думаю, должно выполнять данную задачу.
На ошибки не проверял, но как пример код должен подойти.

C#:
string path = @"C:\Windows\System32\cmd.exe";
string args = @"/k ""C:\Program Files\nodejs\nodevars.bat""";
string cmd1 = @"cd C:\Users\Administrator\Desktop\index\index\index2";
string cmd2 = "node index.js";

string line = string.Empty;
try {
    var p = new System.Diagnostics.Process();
    p.StartInfo.RedirectStandardError = true; // переадресация вывода ошибок
    p.StartInfo.RedirectStandardOutput = true; // переадресация вывода
    p.StartInfo.RedirectStandardInput = true; // переадресация ввода
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.Verb = "runas"; // запуск с правами администратора
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.FileName = path; // путь к программе
    p.StartInfo.Arguments = args; // аргументы запуска
    p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => {
        if(!string.IsNullOrEmpty(e.Data)){
           line = string.Join(Environment.NewLine, new[]{line, e.Data });
        }
    });
    p.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => {
        if(!string.IsNullOrEmpty(e.Data)){
           line = string.Join(Environment.NewLine, new[]{line, e.Data });
        }
    });
    p.Start();
    p.BeginOutputReadLine();
    p.BeginErrorReadLine();
    
    p.StandardInput.WriteLine(cmd1); // команда 1
    p.StandardInput.WriteLine(cmd2); // команда 2
    p.WaitForExit(); // ждем пока завершится работа программы...
}
catch (Exception e){
    line = string.Join(Environment.NewLine, new[]{line, e.Message });
  
}

return line; // вернуть результат
 
  • Спасибо
Реакции: baracuda, sydoow и S10n4eg

S10n4eg

Client
Регистрация
25.06.2014
Сообщения
186
Благодарностей
24
Баллы
18
Подкорректировал вариант отсюда или отсюда, думаю, должно выполнять данную задачу.
На ошибки не проверял, но как пример код должен подойти.

C#:
string path = @"C:\Windows\System32\cmd.exe";
string args = @"/k ""C:\Program Files\nodejs\nodevars.bat""";
string cmd1 = @"cd C:\Users\Administrator\Desktop\index\index\index2";
string cmd2 = "node index.js";

string line = string.Empty;
try {
    var p = new System.Diagnostics.Process();
    p.StartInfo.RedirectStandardError = true; // переадресация вывода ошибок
    p.StartInfo.RedirectStandardOutput = true; // переадресация вывода
    p.StartInfo.RedirectStandardInput = true; // переадресация ввода
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.Verb = "runas"; // запуск с правами администратора
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.FileName = path; // путь к программе
    p.StartInfo.Arguments = args; // аргументы запуска
    p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => {
        if(!string.IsNullOrEmpty(e.Data)){
           line = string.Join(Environment.NewLine, new[]{line, e.Data });
        }
    });
    p.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => {
        if(!string.IsNullOrEmpty(e.Data)){
           line = string.Join(Environment.NewLine, new[]{line, e.Data });
        }
    });
    p.Start();
    p.BeginOutputReadLine();
    p.BeginErrorReadLine();
   
    p.StandardInput.WriteLine(cmd1); // команда 1
    p.StandardInput.WriteLine(cmd2); // команда 2
    p.WaitForExit(); // ждем пока завершится работа программы...
}
catch (Exception e){
    line = string.Join(Environment.NewLine, new[]{line, e.Message });
 
}

return line; // вернуть результат
Подкорректировал вариант отсюда или отсюда, думаю, должно выполнять данную задачу.
На ошибки не проверял, но как пример код должен подойти.

C#:
string path = @"C:\Windows\System32\cmd.exe";
string args = @"/k ""C:\Program Files\nodejs\nodevars.bat""";
string cmd1 = @"cd C:\Users\Administrator\Desktop\index\index\index2";
string cmd2 = "node index.js";

string line = string.Empty;
try {
    var p = new System.Diagnostics.Process();
    p.StartInfo.RedirectStandardError = true; // переадресация вывода ошибок
    p.StartInfo.RedirectStandardOutput = true; // переадресация вывода
    p.StartInfo.RedirectStandardInput = true; // переадресация ввода
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.Verb = "runas"; // запуск с правами администратора
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.FileName = path; // путь к программе
    p.StartInfo.Arguments = args; // аргументы запуска
    p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => {
        if(!string.IsNullOrEmpty(e.Data)){
           line = string.Join(Environment.NewLine, new[]{line, e.Data });
        }
    });
    p.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => {
        if(!string.IsNullOrEmpty(e.Data)){
           line = string.Join(Environment.NewLine, new[]{line, e.Data });
        }
    });
    p.Start();
    p.BeginOutputReadLine();
    p.BeginErrorReadLine();
   
    p.StandardInput.WriteLine(cmd1); // команда 1
    p.StandardInput.WriteLine(cmd2); // команда 2
    p.WaitForExit(); // ждем пока завершится работа программы...
}
catch (Exception e){
    line = string.Join(Environment.NewLine, new[]{line, e.Message });
 
}

return line; // вернуть результат
Да сработало) спасибо. Но только почему-то не остановился код С#. Может подскажите как сделать, что-бы команда отправилась и кубик остановился?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 765
Благодарностей
2 407
Баллы
113
Да сработало) спасибо. Но только почему-то не остановился код С#. Может подскажите как сделать, что-бы команда отправилась и кубик остановился?
Можете удалить вот эту строчку:
C#:
 p.WaitForExit(); // ждем пока завершится работа программы...
Вместо нее просто добавить паузу на необходимое количество секунд:
C#:
Thread.Sleep(5*1000);
Тогда кубик не будет ждать выполнение скрипта и завершения его работы - а просто завершит работу через указанную паузу.
 
  • Спасибо
Реакции: S10n4eg

S10n4eg

Client
Регистрация
25.06.2014
Сообщения
186
Благодарностей
24
Баллы
18
Можете удалить вот эту строчку:
C#:
 p.WaitForExit(); // ждем пока завершится работа программы...
Вместо нее просто добавить паузу на необходимое количество секунд:
C#:
Thread.Sleep(5*1000);
Тогда кубик не будет ждать выполнение скрипта и завершения его работы - а просто завершит работу через указанную паузу.
Большое вам спасибо)
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 765
Благодарностей
2 407
Баллы
113
  • Спасибо
Реакции: S10n4eg

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)