2015-12-26 38 views
-1

我有一個JavaScript代碼,需要進入控制檯應用程序。該腳本工作正常槽cmd但我想製作一個控制檯應用程序,所以它更友好。有人可以向我解釋如何在控制檯應用程序中編寫此代碼,或者使用鏈接將其附加到控制檯應用程序中。我是新來的控制檯應用程序,所以我道歉,如果我問任何愚蠢的:-)需要幫助才能將此代碼提供給控制檯應用程序

當我使用它的槽cmd然後我做以下; - 運行cmd。 - 輸入「cd downloads」,然後按回車。 - 輸入「cscript/nologo process.js log.txt 100 200」,然後按回車。 - 然後我將在cmd窗口中獲得一個列表,並且我需要在下載文件夾中包含process.js和log.txt以使其工作。

if(WScript.Arguments.Count() < 3) 
 
{ 
 
    WScript.Echo("Usage: cscript process.js <filename> <lower_value> <upper_value>"); 
 
    WScript.Quit(); 
 
} 
 
    
 
var filename = WScript.Arguments.Item(0); 
 
var lowerBound = parseInt(WScript.Arguments.Item(1)); 
 
var upperBound = parseInt(WScript.Arguments.Item(2)); 
 
    
 
WScript.Echo("Here is the data from the file associated with the text 'verdi', where the"); 
 
WScript.Echo("number following 'verdi' is above " + lowerBound + " and below " + upperBound); 
 
    
 
var fso = new ActiveXObject("Scripting.FileSystemObject") 
 
var file = fso.OpenTextFile("log.txt", 1, false); 
 
    
 
var lines = file.ReadAll().split('\r'); 
 
    
 
var failed = 0; 
 
for(var idx in lines) 
 
{ 
 
    try 
 
    { 
 
     if(lines[idx].indexOf('verdi') > 0) 
 
     { 
 
      var tmp = lines[idx]; 
 
      var regex = /verdi\s*\=\s*(\d+)/; 
 
      var result = regex.exec(tmp); 
 
      var num = parseInt(result[1]); 
 
      if(num >= lowerBound && num <= upperBound) 
 
      { 
 
       WScript.Echo(num); 
 
      } 
 
     } 
 
    } 
 
    catch(ex) 
 
    { 
 
     failed++; 
 
    } 
 
} 
 
    
 
if(failed > 0) 
 
{ 
 
    WScript.Echo("WARNING: one or more lines could not be processed!"); 
 
}

我已在控制檯應用程序的代碼,但它正常工作doesent。我可以選擇這些值並讓cmd運行。但是我沒有在窗口中看到結果並將結果打印到文檔中。

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Threading.Tasks; 
 

 
namespace ConsoleApplication3 
 
{ 
 
    class Program 
 
    { 
 
     private static object cmd; 
 
     private static int verdi; 
 
     private static int s; 
 
     private static int d; 
 

 
     public static object WScript { get; private set; } 
 

 
     static void Main(string[] args) 
 
     { 
 
      //Choose lower and upper value 
 
      Console.WriteLine("Choose a lower and upper value:"); 
 
      string value = Console.ReadLine(); 
 

 

 
      //Choose file 
 
      Console.WriteLine("Choose a file to scan:"); 
 
      string file = Console.ReadLine(); 
 

 

 
      //Run the javascript code   
 
      Console.WriteLine("cd downloads"); 
 
      Console.WriteLine("cscript /nologo process.js {0} {1} > mydata.txt", file, value); 
 
      string command = Console.ReadLine(); 
 
      Console.WriteLine("Press any key to start scan"); 
 
      System.Diagnostics.Process.Start("cmd.exe", "/C" + command); 
 

 

 
      //Quit Console Application 
 
      Console.WriteLine("Press any key to quit."); 
 
      Console.ReadKey(); 
 
         
 
     } 
 
    } 
 
}

回答

0

Console.WriteLine只打印字符串。它不允許你執行命令。 你可以代替試試這個:

string command = $"cscript /nologo c:/downloads/process.js c:/downloads/{file} {lowerValue} {upperValue} > mydata.txt"); 
System.Diagnostics.Process.Start($"cmd.exe /C {command}"); 

也有在process.js錯誤。該腳本始終從log.txt中讀取並忽略文件名。

但是你爲什麼在這裏使用兩個程序?您可以將所有代碼放在一個文件中。爲什麼使用JavaScript而另一個使用C#?

+0

感謝您的快速幫助。我會嘗試代碼。是的,我同意你的意見。沒有理由,我只是新手。我可以在C#中做所有事情嗎?需要做些什麼?再次感謝你。 –

+0

您應該可以將js代碼轉換爲C#。只需查看File類的文檔即可。 https://msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx – SpiderPig

+0

感謝您的幫助。現在我差不多完成了。我現在已經將幾乎所有東西都提供給了C#。我只需要一點點幫助。我無法獲得上限和下限的價值。當我將文本文件加載到RichTextBox中時,我只希望軟件加載兩個給定值內的特定文本。防爆;較低的值=「verdi23」和較高的值=「verdi30」。然後,如果文本文件包含verdi24,verdi 27和verdi 40,則只有verdi24和verdi27應該加載到RichTextBox中。 有人有OpenFileDialog單擊button1時加載文本的解決方案? –