2015-12-26 37 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时加载文本的解决方案? –