2012-10-12 49 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'

相關問題