issue when piping from a windows program

Takashi Yano takashi.yano@nifty.ne.jp
Wed Apr 12 08:56:11 GMT 2023


On Tue, 11 Apr 2023 09:15:03 +0200
Leonid Mironov wrote:
> I am trying to feed the output of wmic.exe - a windows console program, to cygwin bash script. 
> wmic.exe produces UTF16LE output with BOM and CR/LFs, so I am using dos2unix to convert it. 
> The problem is that when I write wmic.exe output to a file and then use dos2unix to convert this file 
> I get the expected result - ASCII file with LFs, I get the same result when I pipe this file to dos2unix, 
> but when I pipe wmic.exe output directly to dos2unix I get ASCII file with CR/LFs and an extra empty line. 
> Cygwin is up to date, windows 10. What gives?
> 
> Here are the hexdumps
> 
> of 'wmic /NAMESPACE:\\\\root\\WMI PATH BatteryStatus get charging,voltage,remainingcapacity,chargerate>file'
> 
> 00000000  ff fe 43 00 68 00 61 00  72 00 67 00 65 00 52 00  |..C.h.a.r.g.e.R.|
> 00000010  61 00 74 00 65 00 20 00  20 00 43 00 68 00 61 00  |a.t.e. . .C.h.a.|
> 00000020  72 00 67 00 69 00 6e 00  67 00 20 00 20 00 52 00  |r.g.i.n.g. . .R.|
> 00000030  65 00 6d 00 61 00 69 00  6e 00 69 00 6e 00 67 00  |e.m.a.i.n.i.n.g.|
> 00000040  43 00 61 00 70 00 61 00  63 00 69 00 74 00 79 00  |C.a.p.a.c.i.t.y.|
> 00000050  20 00 20 00 56 00 6f 00  6c 00 74 00 61 00 67 00  | . .V.o.l.t.a.g.|
> 00000060  65 00 20 00 20 00 0d 00  0a 00 30 00 20 00 20 00  |e. . .....0. . .|
> 00000070  20 00 20 00 20 00 20 00  20 00 20 00 20 00 20 00  | . . . . . . . .|
> 00000080  20 00 46 00 41 00 4c 00  53 00 45 00 20 00 20 00  | .F.A.L.S.E. . .|
> 00000090  20 00 20 00 20 00 33 00  37 00 37 00 33 00 34 00  | . . .3.7.7.3.4.|
> 000000a0  20 00 20 00 20 00 20 00  20 00 20 00 20 00 20 00  | . . . . . . . .|
> 000000b0  20 00 20 00 20 00 20 00  20 00 20 00 31 00 32 00  | . . . . . .1.2.|
> 000000c0  37 00 34 00 30 00 20 00  20 00 20 00 20 00 0d 00  |7.4.0. . . . ...|
> 000000d0  0a 00                                             |..|
> 000000d2
> 
> of wimic>file followed by dos2unix<file or cat file|dos2unix
> 
> 00000000  43 68 61 72 67 65 52 61  74 65 20 20 43 68 61 72  |ChargeRate  Char|
> 00000010  67 69 6e 67 20 20 52 65  6d 61 69 6e 69 6e 67 43  |ging  RemainingC|
> 00000020  61 70 61 63 69 74 79 20  20 56 6f 6c 74 61 67 65  |apacity  Voltage|
> 00000030  20 20 0a 30 20 20 20 20  20 20 20 20 20 20 20 46  |  .0           F|                                                              
> 00000040  41 4c 53 45 20 20 20 20  20 33 37 37 33 34 20 20  |ALSE     37734  |                                                              
> 00000050  20 20 20 20 20 20 20 20  20 20 20 20 31 32 37 34  |            1274|
> 00000060  30 20 20 20 20 0a                                 |0    .|
> 00000066
> 
> and of wimic|dos2unix
> 
> 00000000  43 68 61 72 67 65 52 61  74 65 20 20 43 68 61 72  |ChargeRate  Char|
> 00000010  67 69 6e 67 20 20 52 65  6d 61 69 6e 69 6e 67 43  |ging  RemainingC|
> 00000020  61 70 61 63 69 74 79 20  20 56 6f 6c 74 61 67 65  |apacity  Voltage|
> 00000030  20 20 0d 0a 30 20 20 20  20 20 20 20 20 20 20 20  |  ..0           |
> 00000040  46 41 4c 53 45 20 20 20  20 20 33 37 37 33 34 20  |FALSE     37734 |
> 00000050  20 20 20 20 20 20 20 20  20 20 20 20 20 31 32 37  |             127|
> 00000060  34 30 20 20 20 20 0d 0a  0d 0a                    |40    ....|
> 0000006a

This is not cygwin problem.

Please try the following in command prompt without cygwin.

wmic > wmic_redirect.txt
wmic | more > wmic_pipe.txt

Then, open both text file using binary editor.
wmic_redirect.txt has \r\n in UTF16 encoding, however,
you will find wmic_pipe.txt has abnormal line endings.

-- 
Takashi Yano <takashi.yano@nifty.ne.jp>


More information about the Cygwin mailing list