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