Home > Commands A-M > Commands F


Description | Syntax | Parameters | Switches | Related | Notes | Examples | Errorlevels | Availability

Compares two files and displays the differences between them.


FC /?

To make an text comparison:

FC [/A | [/U] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/W] [/nnnn] [drive1:][path1]filename1 [drive2:][path2]filename2

To make a binary comparison:

FC /B [drive1:][path1]filename1 [drive2:][path2]filename2

drive1: ( path1 filename1 v2.0 Win95 NT3.5)
Specifies the location and name of the first file you want to compare.
drive2: ( path2 filename2 v2.0 Win95 NT3.5)
Specifies the location and name of the second file you want to compare.

/? (NTXP)
Display help.
/A (v2.0 Win95 NT3.5)
Abbreviates the output of an ASCII comparison. Instead of displaying all the lines that are different, FC displays only the first and last line for each set of differences.
/B (v2.0 Win95 NT3.5)
Compares the files in binary mode. FC compares the two files byte by byte and does not attempt to resynchronize the files after finding a mismatch. This is the default mode for comparing files that have extensions of .EXE, .COM, .SYS, .OBJ, .LIB, or .BIN.
/C (v2.0 Win95 NT3.5)
Ignores the case of letters.
/L (v2.0 Win95 NT3.5)
Compares the files in ASCII mode. FC compares the two files line by line and attempts to resynchronize the files after finding a mismatch. This is the default mode for comparing files that do not have extensions of .EXE, .COM, .SYS, .OBJ, .LIB, or .BIN.
/LBn (v2.0 Win95 NT3.5)
Sets the number of lines for the internal line buffer. The default length of the line buffer is 100 lines. If the files being compared have more than this number of consecutive differing lines, FC cancels the comparison.
/N (v2.0 Win95 NT3.5)
Displays the line numbers during an ASCII comparison.
Do not skip files with offline attribute set.
/T (v2.0 Win95 NT3.5)
Does not expand tabs to spaces. The default behavior is to treat tabs as spaces, with stops at each eighth character position.
/U (NT3.5)
Compare files as UNICODE text files.
/W (v2.0 Win95 NT3.5)
Compresses white space (tabs and spaces) during the comparison. If a line contains many consecutive spaces or tabs, the /W switch treats these characters as a single space. When used with the /W switch, FC ignores (and does not compare) white space at the beginning and end of a line.
/nnnn (v2.0 Win95 NT3.5)
Specifies the number of consecutive lines that must match before FC considers the files to be resynchronized. If the number of matching lines in the files is less than this number, FC displays the matching lines as differences. The default value is 2.


COMP - Compare two files and display any characters which do NOT match.
FIND - Search for a text string in a file.
FINDSTR - Search for strings in files.
Equivalent Linux BASH commands:
comm - Compare two sorted files line by line.
cmp - Compare two files.
diff - Display the differences between two files.
diff3 - Show differences among three files.
sdiff - merge two files interactively.

Reporting differences between files for an ASCII comparison

When you use FC for an ASCII comparison, the operating system reports differences between two files by displaying the name of the first file, followed by the last line to match in both files, followed by the lines from filename1 that differ between the files, followed by the first line to match in both files. The operating system then displays the name of the second file, followed by the last line to match, followed by the lines from filename 2 that differ, followed by the next line to match.

Using the /B switch for binary comparisons

The operating system uses this format to report mismatches found during a binary comparison:

    xxxxxxxx: yy zz

The value of xxxxxxxx specifies the relative hexadecimal address for the pair of bytes, measured from the beginning of the file. Addresses start at 00000000; the hexadecimal values for yy and zz represent the mismatched bytes from filename1 and filename2, respectively.

Using wildcards

You can use wildcards (* and ?) in either of the filenames you specify with the FC command. If you use a wildcard in filename1, FC compares all the specified files to the file specified by filename2. If you use a wildcard in filename2, FC uses the corresponding value from filename1.

How FC uses memory

When comparing ASCII files, FC uses an internal buffer (large enough to hold 100 lines) as storage. If the files are larger than the buffer, FC compares what it can load into the buffer. If FC does not find a match in the loaded portions of the files, it stops and displays the message:

    Resynch failed. Files are too different.

When comparing binary files that are larger than available memory, FC compares both files completely, overlaying the portions in memory with the next portions from the disk. The output is the same as that for files that fit completely in memory.


Suppose you want to make an ASCII comparison of two text files that are named MONTHLY.RPT and SALES.RPT, and you want to display the results in abbreviated format. To make this comparison, type:


To make a binary comparison of two batch files named PROFITS.BAT and EARNINGS.BAT, type:


The results of this command will be similar to:

    00000002: 72 43
    00000004: 65 3A
    0000000E: 56 92
    00000012: 6D 5C
    00000013: 0D 7C
    00000014: 0D 0A
    00000015: 0A 0D
    0000001E: 43 7A
    0000001F: 09 0A
    00000022: 72 44
    000005E0: 00 61
    000005E1: 00 73
    000005E2: 00 73
    000005E3: 00 69
    000005E4: 00 67
    000005E5: 00 6E
    000005E6: 00 6D
    000005E7: 00 65
    000005E8: 00 6E

If the PROFITS.BAT and EARNINGS.BAT files were identical, FC would display the message:

    FC: no differences encountered

To compare every .BAT file in the current directory with the file NEW.BAT, type:


To compare the file NEW.BAT on drive C with the file NEW.BAT on drive D, type:


To compare each batch file in the root directory on drive C to the file with the same name in the root directory on drive D, type:

    FC C:\*.BAT D:\*.BAT



v2.0 v2.01 v2.05 v2.10 v2.11 v2.11R v2.12 v2.2 v2.25 v3.0 v3.20 v3.05 v3.1 v3.21 v3.25 v3.30 v3.3A v3.3R v3.3T v3.31 v3.40 v4.0 v4.01 v4.01A v5.0 v5.0A v5.00.02 v5.001A v5.01 v5.02 v6.0 v6.10 v6.2 v6.21 v6.22 v6.23 v7.00 v7.0R1 v7.10 v8.00
Win95 Win98 WinME
Windows NT
NT3.5 NT4 NT2000 NTXP NT2003