在windows上,通过管道传输到其他命令的二进制文件的wget会破坏二进制文件

在windows上,通过管道传输到其他命令的二进制文件的wget会破坏二进制文件,windows,unix,wget,Windows,Unix,Wget,这可能会推高stackoverflow和serverfault之间的界限,但接下来是。我试图从maven repo中创建一个war文件,然后将其复制到部署目录中的远程系统。这就是我所拥有的: wget -qO- http://somerepo/nexus/content/group/public/com/mycomp/myartifact-0.0.1.war | ssh remotesystem "cat > /path/to/appserver/deploy/myartifac

这可能会推高stackoverflow和serverfault之间的界限,但接下来是。我试图从maven repo中创建一个war文件,然后将其复制到部署目录中的远程系统。这就是我所拥有的:

wget -qO- http://somerepo/nexus/content/group/public/com/mycomp/myartifact-0.0.1.war | 
    ssh remotesystem "cat > /path/to/appserver/deploy/myartifact.war
注意,为了便于阅读,这被分成两行

问题是,当我在windows上运行此操作时,导致输出重定向到标准输出的
-qO-
q
部分只是使注释静音)也会导致windows将
0A
转换为
0D0a
,或将LF转换为CRLF。我可以只处理输出,但不知道是否有一种方法可以不用额外的步骤就完成这项工作。有什么想法吗

--------------------------编辑--------------------------------

在任何人提起之前,我可以这样做:

wget -qO- http://somerepo/nexus/content/group/public/com/mycomp/myartifact-0.0.1.war | 
    ssh remotesystem "cat | dos2unix > /path/to/appserver/deploy/myartifact.war
但是,艾克!为什么wget要将CR添加到二进制文件中?我知道它将成为标准输出,但二进制文件将成为标准输出的唯一原因是它可以通过管道传输到某些东西中。二进制是二进制的,在二进制中插入字符是没有意义的

--------------------------编辑2---------------------------------

我的wget版本似乎是1.11.4

C:\Temp>"C:\Program Files (x86)\Gnu\GetGnuWin32\gnuwin32\bin\wget" -V
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\Gnu\GetGnuWin32\gnuwin32/etc/wgetrc
GNU Wget 1.11.4

Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
Currently maintained by Micah Cowan <micah@cowan.name>.
C:\Temp>“C:\ProgramFiles(x86)\Gnu\GetGnuWin32\gnuwin32\bin\wget”-V
SYSTEM_WGETRC=c:/progra~1/wget/etc/WGETRC
syswgetrc=C:\ProgramFiles(x86)\Gnu\GetGnuWin32\gnuwin32/etc/wgetrc
GNU Wget 1.11.4
版权所有(C)2008免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
.
这是自由软件:您可以自由更改和重新发布它。
在法律允许的范围内,不存在任何担保。
最初由Hrvoje Niksic撰写。
目前由Micah Cowan维护。

这是通过使用什么版本的wget获得的?它似乎是在1.11.4之后的某个时候被修复的,尽管1.12(以及更高版本)是否会构建在Windows上似乎还有疑问。在5分钟的谷歌搜索中,我找不到任何超过1.12的主机(不确定该版本是否已修复)。你可以自己编译源代码。@Luke,我在上面的问题(1.11.4)中添加了我的版本信息,当你说1.11.4之后的某个时候,你的意思是在1.11.4之后,对吗?关于我在哪里可以获得winblows的更高版本,有什么建议吗?我不知道winblows是什么。无论如何,据称包括wget 1.12;不过,我不确定这是否包括二进制模式修复程序,而且我在任何地方都找不到任何更高版本的二进制文件。@Luke,呵呵,只是linux的一个幽默尝试。。。所以,明哥可能有。。。那很有趣。我去看看,谢谢你的帮助!如果你还在找,试试Cygwin。他们的wget版本目前为1.13.4。