0

我正在使用以下 JScript 代码在文件中搜索字符串:

  var myFile = aqFile.OpenTextFile(fileToSearchIn, aqFile.faRead, aqFile.ctANSI);

  while(!myFile.IsEndOfFile())
  {
    s = myFile.ReadLine();
    if (aqString.Find(s, searchString) != -1)
      Log.Checkpoint(searchString + " found.", s); 
  }

  myFile.Close();

这个比较慢。我正在考虑使用 bash 命令来加快文件过程中的搜索:

  var WshShell = new ActiveXObject("WScript.Shell");
  var oExec = WshShell.Exec("C:\\cygwin\\bin\\bash.exe -c 'cat \"" + folderName + "/" + fileName + "\"'"); 
  while (!oExec.StdOut.AtEndOfStream)
    Log.Checkpoint(oExec.StdOut.ReadLine());
  while (!oExec.StdErr.AtEndOfStream)
    Log.Error(oExec.StdErr.ReadLine());

由于每次启动 bash.exe 都会打开一个新窗口,因此搜索并不比以前快。是否有可能使用另一个开关在后台运行 bash?

4

1 回答 1

0

每次调用WshShell.Exec都会启动一个代价高昂的新进程。如果您的文本文件不是太大,这将阻止生成新进程:

var myFile = aqFile.OpenTextFile(fileToSearchIn, aqFile.faRead, aqFile.ctANSI);
var myFileData = myFile.Read(myFile.Size);
var index = myFileData.indexOf(searchString);
if(index>0)
{
  Log.Checkpoint(searchString + " found.", index); 
}
myFile.Close();

这不会打印整行,而是打印找到的位置的索引。如果您想要整行,请从那里搜索行尾。

于 2012-06-12T10:37:47.267 回答