<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.bci2000.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cdasalla</id>
	<title>BCI2000 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.bci2000.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cdasalla"/>
	<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php/Special:Contributions/Cdasalla"/>
	<updated>2026-06-09T19:00:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Command_Line_Processing&amp;diff=5878</id>
		<title>User Reference:Command Line Processing</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Command_Line_Processing&amp;diff=5878"/>
		<updated>2011-01-20T06:24:45Z</updated>

		<summary type="html">&lt;p&gt;Cdasalla: /* Processing data with parameters different from the ones contained in the file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Command line interfaces are a powerful tool for dynamically combining pieces of software which are typically small programs optimized for performing a very limited functionality. With a command line interface, data processing is usually performed &#039;&#039;sequentially&#039;&#039; on a stream of data. This allows the processing of indefinitely large amounts of data while consuming but a finite, and often very small, amount of memory.&lt;br /&gt;
&lt;br /&gt;
Moreover, combining command line programs to perform complex tasks can be done interactively by entering complex commands directly and also in a &amp;quot;scripting&amp;quot; manner, by entering sequences of commands into text files which allow for iteration and branching. That way, automation of complex tasks can be achieved by rather simple means.&lt;br /&gt;
&lt;br /&gt;
With the BCI2000 command line interface, BCI2000 data files can be &lt;br /&gt;
  &lt;br /&gt;
*&#039;&#039;converted&#039;&#039;  into various formats, ready for further processing with available software tools, or for visual inspection in  human readable format; &lt;br /&gt;
*&#039;&#039;processed&#039;&#039;  off-line with literally the same code as used in the on-line system. &lt;br /&gt;
&lt;br /&gt;
Together, these two concepts provide versatile access to recorded data in all stages of processing.&lt;br /&gt;
The BCI2000 command line interface may prove useful for&lt;br /&gt;
  &lt;br /&gt;
*automated &#039;&#039;analysis&#039;&#039;  of large amounts of recorded data, &lt;br /&gt;
*&#039;&#039;development&#039;&#039;  of new filter classes, &lt;br /&gt;
*&#039;&#039;verification&#039;&#039;  of external off-line analysis methods. &lt;br /&gt;
&lt;br /&gt;
This document explains the command line tools available for working with BCI2000 files, and how to build BCI2000 filters as single executables that may be combined to form a chain of filters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Command line interfaces==&lt;br /&gt;
&lt;br /&gt;
Basically, the interface of a command line tool consists of &lt;br /&gt;
  &lt;br /&gt;
*an input stream &amp;lt;tt&amp;gt;stdin&amp;lt;/tt&amp;gt;, &lt;br /&gt;
*an output stream &amp;lt;tt&amp;gt;stdout&amp;lt;/tt&amp;gt;, &lt;br /&gt;
*an error stream &amp;lt;tt&amp;gt;stderr&amp;lt;/tt&amp;gt;, &lt;br /&gt;
*optional arguments (switches) controlling details of its behavior. &lt;br /&gt;
The most important feature of a command line interface is its ability to &#039;&#039;redirect&#039;&#039;  streams.&lt;br /&gt;
  &lt;br /&gt;
*&amp;lt;tt&amp;gt;stdin&amp;lt;/tt&amp;gt; can be redirected to read from a file using the  &amp;lt;tt&amp;gt;&amp;lt;&amp;lt;/tt&amp;gt; operator; &lt;br /&gt;
*&amp;lt;tt&amp;gt;stdout&amp;lt;/tt&amp;gt; can be redirected to write to a file using the  &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt; operator; &lt;br /&gt;
*one program&#039;s &amp;lt;tt&amp;gt;stdout&amp;lt;/tt&amp;gt; can be plugged into another program&#039;s  &amp;lt;tt&amp;gt;stdin&amp;lt;/tt&amp;gt; using the &amp;lt;tt&amp;gt;|&amp;lt;/tt&amp;gt; operator (&amp;quot;pipe&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
Because redirection is a feature of the program&#039;s execution environment (&amp;quot;shell&amp;quot;), and not a feature of the program itself, programs can be very simple, avoiding all explicit handling of input or output files. &lt;br /&gt;
&lt;br /&gt;
The following example command line will extract the &amp;quot;sampling rate&amp;quot; parameter from the BCI2000 data file &amp;lt;tt&amp;gt;mydata.dat&amp;lt;/tt&amp;gt;, and display the result on the text console:&lt;br /&gt;
 bci_dat2stream &amp;lt; mydata.dat | bci_stream2prm | grep SamplingRate&lt;br /&gt;
&lt;br /&gt;
==Building BCI2000 command line tools==&lt;br /&gt;
&lt;br /&gt;
Usually, command line tools are built automatically from the main makefile.&lt;br /&gt;
You will need to manually build the command line tools in one of the following situations:&lt;br /&gt;
*You are using the Borland C++ Builder 6 IDE rather than &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;. &lt;br /&gt;
*You are using Borland C++ Builder 2006/2007, and thus [[Programming Howto:Building BCI2000#Compiling_BCI2000_with_Borland_C.2B.2B_Builder_2006.2F2007|cannot use make to build all of BCI2000]].&lt;br /&gt;
*You are going create a command line executable from your own &amp;lt;tt&amp;gt;GenericFilter&amp;lt;/tt&amp;gt; descendant class.&lt;br /&gt;
&lt;br /&gt;
To do a manual build, open a shell (cmd) window. Change to the &amp;lt;tt&amp;gt;BCI2000/src/core/Tools/cmdline&amp;lt;/tt&amp;gt; directory, and execute &amp;lt;tt&amp;gt;make install&amp;lt;/tt&amp;gt; from there; this will also move the resulting executables to the &amp;lt;tt&amp;gt;BCI2000/Tools/cmdline&amp;lt;/tt&amp;gt; directory. To build an executable from a file &amp;lt;tt&amp;gt;MyFilter.cpp&amp;lt;/tt&amp;gt; containing a BCI2000 filter &amp;lt;tt&amp;gt;MyFilter&amp;lt;/tt&amp;gt;, execute &lt;br /&gt;
 make MyFilter.install&lt;br /&gt;
This will build an executable &amp;lt;tt&amp;gt;MyFilter.exe&amp;lt;/tt&amp;gt; and add it to the &amp;lt;tt&amp;gt;BCI2000/Tools/cmdline&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Building command line tools does not require the full Borland C++ Builder IDE; you may use the [http://www.borland.com/downloads/download_cbuilder.html freely available command line version] of the Borland C++ compiler instead. In this case, you will need to comment out the line reading &amp;lt;code&amp;gt;#include &amp;lt;vcl.h&amp;gt;&amp;lt;/code&amp;gt; from the file &amp;lt;tt&amp;gt;BCI2000/src/shared/PCHIncludes.h&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to use the command line tools, you will need to add the full path &lt;br /&gt;
to the &amp;lt;tt&amp;gt;BCI2000/Tools/cmdline&amp;lt;/tt&amp;gt; directory to your system&#039;s PATH environment variable. (Please consult your operating system documentation for details on environment variables.)&lt;br /&gt;
&lt;br /&gt;
==Stream format==&lt;br /&gt;
&lt;br /&gt;
The common format used to exchange data between BCI2000 command line tools is called a &amp;quot;BCI2000 binary stream,&amp;quot; or just &amp;quot;stream.&amp;quot; Such a &amp;quot;stream&amp;quot; transfers parameters, states, and data in exactly the same binary format as is used for socket communication between the four main modules of the BCI2000 real-time system.&lt;br /&gt;
&lt;br /&gt;
The stream format is different from the BCI2000 &amp;lt;tt&amp;gt;dat&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;prm&amp;lt;/tt&amp;gt; file formats, and is not human readable. A number of tools are available to convert data either to or from stream format.&lt;br /&gt;
As the stream format is only used between tools, and generally not of interest to the user, a typical conversion will use &#039;&#039;two&#039;&#039;  of the tools provided, one to translate the original file into a &amp;quot;stream,&amp;quot; and one to translate the stream into the desired format.&lt;br /&gt;
&lt;br /&gt;
E.g., to display a &amp;lt;tt&amp;gt;dat&amp;lt;/tt&amp;gt; file&#039;s contents in a human readable format, one would use a tool called &amp;lt;tt&amp;gt;bci_dat2stream&amp;lt;/tt&amp;gt; to convert it into a stream, and then use another tool called &amp;lt;tt&amp;gt;bci_stream2asc&amp;lt;/tt&amp;gt; to convert the stream into text. If you want the output to appear in the text window as a sequence of pages, you pipe it into the &amp;quot;more&amp;quot; program:&lt;br /&gt;
 bci_dat2stream &amp;lt; myfile.dat | bci_stream2asc | more&lt;br /&gt;
&lt;br /&gt;
===Conversion into stream format===&lt;br /&gt;
====&amp;lt;tt&amp;gt;bci_dat2stream&amp;lt;/tt&amp;gt;====&lt;br /&gt;
=====Input format=====&lt;br /&gt;
&amp;lt;tt&amp;gt;bci_dat2stream&amp;lt;/tt&amp;gt; converts a BCI2000 data (&amp;lt;tt&amp;gt;dat&amp;lt;/tt&amp;gt;) file into a stream.&lt;br /&gt;
=====Options=====&lt;br /&gt;
The &amp;lt;tt&amp;gt;--transmit&amp;lt;/tt&amp;gt; option may be used to select states, parameters, and data for transmission, as in&lt;br /&gt;
 bci_dat2stream --transmit-sp &amp;lt; myfile.dat&lt;br /&gt;
In the above example, only states and parameters but no data will be contained in the resulting stream. &amp;quot;Data&amp;quot; comprises signal and state vector data.&lt;br /&gt;
Omitting a &amp;lt;tt&amp;gt;--transmit&amp;lt;/tt&amp;gt; option corresponds to&amp;lt;tt&amp;gt;--transmit-spd&amp;lt;/tt&amp;gt;. This transmits all information contained in the &amp;lt;tt&amp;gt;dat&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
When the &amp;lt;tt&amp;gt;--raw&amp;lt;/tt&amp;gt; option is given, data are transmitted in raw, i.e. uncalibrated, form. By default, data are transmitted in calibrated form, using the calibration information from the &amp;lt;tt&amp;gt;SourceChOffset&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;SourceChGain&amp;lt;/tt&amp;gt; parameters.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;tt&amp;gt;bci_prm2stream&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;bci_prm2stream&amp;lt;/tt&amp;gt; converts a BCI2000 parameter (&amp;lt;tt&amp;gt;prm&amp;lt;/tt&amp;gt;) file into a stream.&lt;br /&gt;
&lt;br /&gt;
===Conversion from stream format===&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;tt&amp;gt;bci_stream2prm&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;bci_stream2prm&amp;lt;/tt&amp;gt; converts a stream into a BCI2000 parameter (&amp;lt;tt&amp;gt;prm&amp;lt;/tt&amp;gt;) file. As a parameter file is just a sequence of parameter lines, this is also a text-only, human readable format.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;tt&amp;gt;bci_stream2asc&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;bci_stream2asc&amp;lt;/tt&amp;gt; converts a stream into a human readable format. Each object contained in the stream will appear as its C++ type name, followed by an opening brace, its content, and a closing brace. The content will appear as defined by the stream inserter &amp;lt;tt&amp;gt;operator&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt; for the object&#039;s type.&lt;br /&gt;
&lt;br /&gt;
In the output of BCI2000 state vector information, each state will appear on its own line, thus values of certain states may be easily extracted using the &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; program.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;tt&amp;gt;bci_stream2table&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;bci_stream2table&amp;lt;/tt&amp;gt; converts a stream into a tab-separated table containing state and signal values in ASCII format. Each state, and each signal entry, has its own column. The first line of output begins with a &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; comment character, and contains a tab-separated list of column headers. This format is best suited for data import into applications that use tables.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;tt&amp;gt;bci_stream2mat&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;bci_stream2mat&amp;lt;/tt&amp;gt; converts a stream into a Matlab binary file. The output &amp;lt;tt&amp;gt;.mat&amp;lt;/tt&amp;gt; file contains two Matlab variables called &amp;lt;tt&amp;gt;Index&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Data&amp;lt;/tt&amp;gt;. Of these, the &amp;lt;tt&amp;gt;Data&amp;lt;/tt&amp;gt; variable is a matrix with each column representing a BCI2000 data block (comprising state information and signal data). &amp;lt;tt&amp;gt;Index&amp;lt;/tt&amp;gt; is a Matlab structure that contains indices into the &amp;lt;tt&amp;gt;Data&amp;lt;/tt&amp;gt; rows, allowing access to BCI2000 states by name, as in:&lt;br /&gt;
 myMatlabVariable = squeeze( Data( Index.TargetCode, : ) );&lt;br /&gt;
&lt;br /&gt;
As each BCI2000 data block contains a signal which is a two-dimensional matrix (channels by elements), the signal index is itself a matrix. To copy the first channel&#039;s data into a Matlab variable, write&lt;br /&gt;
 myChannel1 = squeeze( Data( Index.Signal( 1, : ), : ) );&lt;br /&gt;
&lt;br /&gt;
For convenience, there is a Matlab function provided that simplifies reading &amp;lt;tt&amp;gt;bci_stream2mat&amp;lt;/tt&amp;gt; output files into Matlab variables:&lt;br /&gt;
 [ mySignal, myTargetCode ] = load_bcimat( &#039;eegdata.mat&#039;, 2, &#039;TargetCode&#039; );&lt;br /&gt;
&lt;br /&gt;
This function takes the file name as its first argument. In a second argument, specify the number of dimensions your output signal will have -- typically, this will be 2 for EEG-like data (samples by channels), and 3 for spectral data (blocks by bins by channels). Remaining arguments are treated as state names; the associated state data will be written into the variables specified as remaining output arguments. State variables will always be one-dimensional, with their number of entries matching the first dimension of the signal variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying BCI2000 filters to streams==&lt;br /&gt;
&lt;br /&gt;
===Compiling an existing filter as a command line tool===&lt;br /&gt;
&lt;br /&gt;
A filter defined in a file &amp;lt;tt&amp;gt;MyFilter.cpp&amp;lt;/tt&amp;gt; may be compiled and linked into its own executable by executing&lt;br /&gt;
 make MyFilter.exe&lt;br /&gt;
&lt;br /&gt;
from the Windows command prompt when in &amp;lt;tt&amp;gt;BCI2000/Tools/cmdline&amp;lt;/tt&amp;gt;. For this to work, it is necessary that the directory containing the filter&#039;s &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; file be contained in the makefile&#039;s &amp;lt;tt&amp;gt;SIGPROC&amp;lt;/tt&amp;gt; variable; you may have to adapt it to fit your needs.&lt;br /&gt;
&lt;br /&gt;
If the filter&#039;s code depends on code not contained within its &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; file, you will get linker complaints about unresolved externals. To solve the problem, add the missing &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; files to the makefile&#039;s &amp;lt;tt&amp;gt;BCIOBJ&amp;lt;/tt&amp;gt; variable, and execute&lt;br /&gt;
 make clean &amp;amp;&amp;amp; make MyFilter.exe&lt;br /&gt;
&lt;br /&gt;
To check whether the executable works, enter &lt;br /&gt;
 MyFilter --help&lt;br /&gt;
&lt;br /&gt;
You should get a message stating that the program applies the &amp;quot;MyFilter&amp;quot; filter to its input.&lt;br /&gt;
&lt;br /&gt;
===Off-line only filters===&lt;br /&gt;
&lt;br /&gt;
For off-line analysis, data must often be partitioned into &amp;quot;segments&amp;quot; before performing statistics. As there is no notion of &amp;quot;segments&amp;quot; in the on-line data and file format, we suggest using the &amp;quot;Running&amp;quot; state to indicate segments in the following way:&lt;br /&gt;
&lt;br /&gt;
When performing a segmenting task, a filter sets the &amp;quot;Running&amp;quot; state to zero outside segments. A statistics filter will then perform buffering from its &amp;lt;tt&amp;gt;Process()&amp;lt;/tt&amp;gt; function, and act on the buffered data from its &amp;lt;tt&amp;gt;StartRun()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;StopRun()&amp;lt;/tt&amp;gt; functions.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Running&amp;quot; state to zero inside the on-line system will suspend the on-line system, so this kind of segmenting and statistics filtering cannot be used on-line.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
The following examples work from the Windows NT command prompt. Nevertheless, we would like to point the reader to the free &#039;&#039;cygwin&#039;&#039;  collection of GNU tools ported to the Win32 API. &#039;&#039;Cygwin&#039;&#039;  provides the power of the &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; shell, and of programs like the &amp;lt;tt&amp;gt;sed&amp;lt;/tt&amp;gt; stream editor. &lt;br /&gt;
Although the BCI2000 command line tools cannot be compiled with &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt;, they work fine when called from &#039;&#039;cygwin&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
===Extracting parameters===&lt;br /&gt;
&lt;br /&gt;
To extract parameters from a data file, convert it into a stream using &amp;lt;tt&amp;gt;bci_dat2stream --transmit-p&amp;lt;/tt&amp;gt;, and convert the stream into a parameter file using &amp;lt;tt&amp;gt;bci_stream2prm&amp;lt;/tt&amp;gt; as in&lt;br /&gt;
 bci_dat2stream &amp;lt; mydata.dat | bci_stream2prm &amp;gt; myprms.prm&lt;br /&gt;
&lt;br /&gt;
===Processing data with parameters different from the ones contained in the file===&lt;br /&gt;
&lt;br /&gt;
To combine a data file with parameters other than those contained in it, use &amp;lt;tt&amp;gt;bci_dat2stream&amp;lt;/tt&amp;gt;&#039;s &amp;lt;tt&amp;gt;--transmit&amp;lt;/tt&amp;gt; option to suppress parameters, and combine its output with &amp;lt;tt&amp;gt;bci_prm2stream&amp;lt;/tt&amp;gt;&#039;s into a single stream. To affect processing, parameters must precede the data in the stream. Combining the output is effected by the &amp;lt;code&amp;gt;( ... &amp;amp;&amp;amp; ... )&amp;lt;/code&amp;gt; construct.&lt;br /&gt;
 (bci_prm2stream &amp;lt; myparameters.prm &amp;amp;&amp;amp; bci_dat2stream --transmit-sd &amp;lt; mydata.dat) | MyFilter | bci_stream2table &amp;gt; mytable.txt&lt;br /&gt;
&lt;br /&gt;
===Processing data with BCI2000 filters and importing the results into Matlab===&lt;br /&gt;
&lt;br /&gt;
To process data with the filters used in the mu-training on-line system, saving the AR spectrum as Matlab file, execute &lt;br /&gt;
 bci_dat2stream &amp;lt; mydata.dat | TransmissionFilter | SpatialFilter | ARFilter | bci_stream2mat &amp;gt; myspectra.mat&lt;br /&gt;
&lt;br /&gt;
Load the data into Matlab using&lt;br /&gt;
 [ signal, TargetCode ] = load_bcimat( &#039;myspectra.mat&#039;, 3, &#039;TargetCode&#039; );&lt;br /&gt;
&lt;br /&gt;
This requires that the file &amp;lt;tt&amp;gt;load_bcimat.m&amp;lt;/tt&amp;gt; is accessible from the Matlab search path.&lt;br /&gt;
&lt;br /&gt;
===Exporting BCI2000 data into a table suitable for import into other applications (MS Excel, SPSS)===&lt;br /&gt;
&lt;br /&gt;
To process data with the filters used in the mu-training on-line system, saving the AR spectrum as a table in ASCII format, execute&lt;br /&gt;
&lt;br /&gt;
 bci_dat2stream &amp;lt; mydata.dat | TransmissionFilter | SpatialFilter | ARFilter | bci_stream2table &amp;gt; mytable.txt&lt;br /&gt;
&lt;br /&gt;
===Testing a modified filter on existing data===&lt;br /&gt;
&lt;br /&gt;
To verify that changes to a filter&#039;s code don&#039;t change its behavior with respect to existing data, apply both versions to a stream, convert the output stream into human readable format, and have a file comparison program display any differences. For the following example, we will compare a previous version of the ARFilter, renamed &amp;lt;tt&amp;gt;prev_ARFilter&amp;lt;/tt&amp;gt;, to the current one.&lt;br /&gt;
  &lt;br /&gt;
#Create a stream suitable for input to the ARFilter:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;bci_dat2stream &amp;lt; mydata.dat | TransmissionFilter | SpatialFilter &amp;gt; test.bcistream&amp;lt;/code&amp;gt;&lt;br /&gt;
#Apply both filter versions to the stream, and save the results in human readable format:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;ARFilter &amp;lt; test.bcistream | bci_stream2asc &amp;gt; ARresult.txt &amp;amp;&amp;amp;  prev_ARFilter &amp;lt; test.bcistream | bci_stream2asc &amp;gt; prev_ARresult.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
#Compare the results (using the Windows NT analog to the &amp;lt;tt&amp;gt;diff&amp;lt;/tt&amp;gt; program):&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;comp /a /l prev_ARresult.txt ARresult.txt | more&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Further information==&lt;br /&gt;
 &lt;br /&gt;
*A comprehensive and up-to-date description of a number of command line shells, and their scripting, is provided at &amp;lt;tt&amp;gt;http://www.ss64.com/&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*The &#039;&#039;cygwin&#039;&#039;  Win32 port of GNU tools can be downloaded at &amp;lt;tt&amp;gt;http://www.cygwin.com/&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*The free command line version of the Borland C++ compiler is available at &amp;lt;tt&amp;gt;http://www.borland.com/downloads/download_cbuilder.html&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:External Interfaces]][[Category:Data Analysis Tools]][[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Cdasalla</name></author>
	</entry>
</feed>