2012-10-12 20 views
2

我得到了一个.patch文件,我必须应用到一些源代码。不幸的是,我在Windows上运行。于是我从http://gnuwin32.sourceforge.net/packages/patch.htm安装了补丁程序的Windows端口,并启动了PowerShell。但是我没有完成,它总是以错误结束。 (除了这一事实的GnuWin32没有“路径”内安装...)Windows PowerShell:如何执行标准输入重定向并将参数正确传递给命令?

首先尝试:

PS D:\eclipsews\fix17435> "C:\Program Files (x86)\GnuWin32\bin\patch.exe" < 17435.patch 
Der Operator "<" wird noch nicht unterstützt. 
Bei Zeile:1 Zeichen:50 
+ "C:\Program Files (x86)\GnuWin32\bin\patch.exe" < <<<< bug-1032189.patch 
    + CategoryInfo   : ParserError: (<:OperatorToken) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : RedirectionNotSupported 

是的,我的电源外壳完美地讲德语,所以googleing没有按错误消息”在网络上导致可能可用的解决方案。 ☹

阅读here on StackOverflow,我试图用“猫”相当于:“获取内容”,但最终在一个错误,也:。顺便说一句

PS D:\eclipsews\fix17435> Get-Content .\17435.patch | "C:\Program Files (x86)\GnuWin32\bin\patch.exe" 
Ausdrücke sind nur als erstes Element einer Pipeline zulässig. 
Bei Zeile:1 Zeichen:82 
+ Get-Content .\bug-1032189.patch | "C:\Program Files (x86)\GnuWin32\bin\patch.exe" <<<< 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline 

,称“获取内容\ 17435.patch“独立作品。第三,我检查了“补丁”手册,如果可以指定一个输入文件作为参数,以避免恼人的重定向问题:是的,使用-i选项。但是,这似乎也被阻止:

PS D:\eclipsews\fix17435> "C:\Program Files (x86)\GnuWin32\bin\patch.exe" -i 17435.patch 
Sie müssen auf der rechten Seite des Operators "-" einen Wertausdruck angeben. 
Bei Zeile:1 Zeichen:50 
+ "C:\Program Files (x86)\GnuWin32\bin\patch.exe" - <<<< i bug-1032189.patch 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : ExpectedValueExpression 

如何在powershell上的标准输入重定向和正确传递参数?有没有一些文件的地方?

+0

我发现了一些(讨厌)的变通,但总比没有好:创建一个新的链接,点它patch.exe。然后编辑链接,并在“目标”文本框中输入-i name-of-your-input-file.patch选项到/ patch.exe后面。不幸的是,设置工作目录并不能帮助修补程序找到文件,所以你必须在DOS风格的窗口中提供名称,你可以通过点击左上角的图标粘贴到剪贴板,选择'编辑'→'粘贴' - 不是英俊的,但比没有好。 – Paramaeleon

回答

3

如果exe文件具有包含空格,你必须引用它的路径,那么你需要调用它像这样:

& "C:\Program Files (x86)\GnuWin32\bin\patch.exe" -i 17435.patch 

如果PowerShell中看到:

"C:\Program Files (x86)\GnuWin32\bin\patch.exe" -i 17435.patch 

它认为它正在评估一个字符串,后面跟着一些它无法识别的运算符-i

0

我有一个类似的PowerShell重定向不能按预期工作的问题。我设法通过产生cmd.exe并使用它来实现本地重定向来解决它。你的第一个例子开始:

"C:\Program Files (x86)\GnuWin32\bin\patch.exe" < 17435.patch

这种方法将使用来代替:

cmd /c "C:\Program Files (x86)\GnuWin32\bin\patch.exe" '<17435.patch'

相关问题