2012-10-01 195 views
2

在Linux環境下運行.bat文件有什麼辦法嗎? 我有幾個.bat文件,其目的是調用mvn install:install-file腳本。因此,在腳本中沒有任何操作系統依賴。在Linux環境下運行.bat

謝謝

回答

6

您可以使用winedosbox,但一般沒有已知bat解釋爲Linux。然而,對於windows的各種unix shell的實現,甚至有一個標準的工具包,Windows Services for UNIX(又名SUA),其中包括ksh實現和許多其他好東西,所以如果你想要它操作系統透明,你可以考慮使用它和用POSIX兼容的shell腳本語言編寫腳本。

---編輯--- 在另一方面,如果你的腳本包含沒有別的以外的mvn <params>,你可以確保文件具有執行權限(x標誌),在前面加上其與外殼口譯員(如/bin/bash script.bat),並有一個去。不過,成功沒有保證。

+1

感謝您的回答。腳本使用'set','rem','call'命令。這些在Unix環境中無法識別。很遺憾,這樣的口譯員尚未創建。 – Sqeezer

+0

是的,抱歉,那不行。 – favoretti

+0

這裏的大問題在於Windows批處理文件可能使用CRLF作爲行分隔符,而bash往往以奇怪的方式窒息。使用['dos2unix'](http://en.wikipedia.org/wiki/Unix2dos)將CRLF轉換爲CR格式。 –

-1

編號bat文件是windows shell腳本,它們可能執行windows命令並希望在Windows環境中運行。您需要將它們轉換爲shell腳本才能在linux上運行它們,因爲您的bash shell無法理解dos命令。幸運的是,如果安裝文件腳本確實與平臺無關,那應該很容易。如果您展示一個示例,我們可以幫助您翻譯。

2

簡單的答案是肯定有辦法,只要在Linux上運行它:

  • 命令你是從.bat文件運行都在$PATH在你的Linux機器
  • 你是不使用Microsoft特定批處理文件命令或控制結構

你需要使文件的可執行文件和最有可能預先設置文件的內容與一條線,告訴Linux運行與腳本外殼。對於bash來說就像這樣:#!/bin/bash

+0

這裏的大問題在於Windows批處理文件可能使用CRLF作爲行分隔符,這些bash往往以奇怪的方式窒息。使用['dos2unix'](http://en.wikipedia.org/wiki/Unix2dos)將CRLF轉換爲CR格式。 –

-1

您可以將.bat腳本等效爲shell腳本。