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

  • Автор темы Автор темы S10n4eg
  • Дата начала Дата начала

S10n4eg

Client
Регистрация
25.06.2014
Сообщения
352
Реакции
67
Баллы
28
Здравствуйте, подскажите пожалуйста, как запустить 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
Помогите пожалуйста)
 
Здравствуйте, подскажите пожалуйста, как запустить 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
Подкорректировал вариант отсюда или отсюда, думаю, должно выполнять данную задачу.
На ошибки не проверял, но как пример код должен подойти.

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; // вернуть результат
Да сработало) спасибо. Но только почему-то не остановился код С#. Может подскажите как сделать, что-бы команда отправилась и кубик остановился?
 
Да сработало) спасибо. Но только почему-то не остановился код С#. Может подскажите как сделать, что-бы команда отправилась и кубик остановился?
Можете удалить вот эту строчку:
C#:
Развернуть Свернуть Копировать
 p.WaitForExit(); // ждем пока завершится работа программы...
Вместо нее просто добавить паузу на необходимое количество секунд:
C#:
Развернуть Свернуть Копировать
Thread.Sleep(5*1000);
Тогда кубик не будет ждать выполнение скрипта и завершения его работы - а просто завершит работу через указанную паузу.
 
  • Оценить
Реакции: S10n4eg
Можете удалить вот эту строчку:
C#:
Развернуть Свернуть Копировать
 p.WaitForExit(); // ждем пока завершится работа программы...
Вместо нее просто добавить паузу на необходимое количество секунд:
C#:
Развернуть Свернуть Копировать
Thread.Sleep(5*1000);
Тогда кубик не будет ждать выполнение скрипта и завершения его работы - а просто завершит работу через указанную паузу.
Большое вам спасибо)
 
  • Оценить
Реакции: BAZAg

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