2017-05-18 69 views
-1

我有在c#中的代碼工作正常,在我的UI自動化過程中在特定的服務器框中運行作業。我需要在節點js中的等效代碼。在節點js執行進程

ProcessStartInfo startinfo = new ProcessStartInfo(); 
      startinfo.FileName = string.Format("schtasks.exe"); 

      string command = string.Format(" /run /s {0} /tn \"{1}\"", "serverbox", "Jobname"); 
      startinfo.Arguments = command; 
      startinfo.CreateNoWindow = true;//Not much important 
      startinfo.UseShellExecute = false;//Not much important 
      startinfo.WindowStyle = ProcessWindowStyle.Hidden;//Not much important 
      Common.Log.Info("Executing Command - " + command); 
      Process proc = new Process(); 
      proc = Process.Start(startinfo); 

我在node.js中有以下代碼引發「args選項的錯誤值」錯誤。

function executeProcess() { 
    var command = new String(" /run /s {0} /tn \"{1}\"", "serverbox", "jobname"); 
    exec(command, function (err, stdout, stderr) { 
    console.log("Running job"); 
    callback(err, stdout, stderr, data) 
}); 

};

+0

https://github.com/tjanczuk/edge –

回答

1

字符串構造函數只接受一個參數。 你的錯誤是在這裏:

var command = new String(" /run /s {0} /tn \"{1}\"", "serverbox", "jobname"); 

爲了避免錯誤採用javascript功能稱爲string templates

const command = ` /run /s "${serverbox}" /tn "${jobname}"` 
+0

VAR命令=新的String('/運行/ s $ {「serverbox1」}/tn $ {「job1」}'); exec(command,function(err,stdout,stderr){ console.log(「Running job」); callback(err,stdout,stderr,data) });仍然我得到「args選項的錯誤值」錯誤。在這個地方schtasks.exe來了嗎?我應該如何在這段代碼中包含它。請回復完整的代碼,因爲我是新來的節點js。 – Nalu

+0

你爲什麼要'新的字符串'?只需使用''。 –

+0

只需從'const a ='qweqwe'這樣簡單的東西開始吧; exec(\'echo $ {a} \',callback)'。然後增加命令的複雜性以運行您需要的進程。你可以使用'console.log(str)'或'console.dir(obj)'來監視你的值。由於nodejs中沒有'Process.Start(startinfo)',所有參數都進入'command'。 –