The answer depends on what "field length" means.
Suppose the length is the longest segment, oriented with the wind, that is contained within the field. First rotate the data so that the wind direction now appears horizontal (west to east), then apply any of the solutions to this problem for the special case posted at How to calculate the maximum distance within a polygon in x-direction (east-west direction). (There are solutions there both for the original shapefile format and solutions for the raster representation.)
Suppose the length is the average distance across the field covered by random air particles blown by the wind. Because the area of the field is the integral of these distances, the length along the wind is the area divided by the width of the field (perpendicular to the wind's direction). Areas are easy to come by with a GIS; we need to compute the width.
a denote the orientation of the wind. A unit vector perpendicular to that direction is
v = (sin(a), -cos(a))
The distance (relative to some arbitrary origin) perpendicular to the wind at a location with coordinates (x,y) is the dot product of (x,y) with v, given by
d(x,y) = x * sin(a) - y * cos(a)
Therefore the width perpendicular to the direction equals the maximum value of d(x,y) attained the field minus the minimum value of d(x,y) in the field. A map algebra workflow to implement this solution begins with the indicator grid of the fields described in the question: call this [Fields].
RegionGroup [Fields] to produce a grid with a unique identifier for each contiguous field. Call the result [Zones].
Obtain two grids, [X] and [Y], giving projected coordinates in the desired units of measurement. (How to do this varies with the software and its version; several methods are described in other threads on this site.)
Compute the local linear combination
[D] = sin(a) * [X] - cos(a) * [Y]. In this expression [X] and [Y] are grids while
cos(a) are numbers computed from the given wind direction
a. (Alternatively, if the wind direction varies from field to field,
a would be a grid giving the wind orientation at every point.)
Find the Zonal Max and Zonal Min of [D] relative to [Zones]. Call these [DMax] and [DMin], respectively. They can be represented either as grids or, more efficiently, as attributes in a table indexed by the zones.
Compute the field widths
[DMax] - [DMin] + w; call the result [Width]. In this formula
w equals the width of one cell perpendicular to the wind. A reasonable estimate is the cellsize
c itself. (The reason this adjustment is needed becomes clear when you contemplate a field that is, say, perfectly horizontal in the grid and just one cell high. In such cases [DMax] and [DMin] will coincide, suggesting the field's width is zero, whereas in fact it is one.) This value estimates the length of the black dashed vector in the figure: there will be one such estimate for each distinct field of the [Zones] grid.
Notice that [Zones] has a "Count" field giving the number of cells per field. Because the area of a field equals c^2 times the number of cells, the computation is completed by means of the ratio
c^2 * [Zones].Count / [Width]
This will be a raster calculation when the zonal statistics are stored in grid format or a field calculation otherwise: just join the [Zones] attribute table to the zonal statistics table from step (4) and proceed.
The actual syntax of these calculations depends on what software is used (and even on what version it is), on the interface to it (e.g., on whether separate tools are invoked or the process is scripted in a language like Python or with a command line interface in ArcGIS or GRASS) and on whether raster calculations or field calculations are employed in steps (4) through (6). Consult the appropriate help pages for the details.