2015-09-08 68 views
1

我的團隊使用Windows生成一個build.zip文件,我想使用cygwin/bash腳本進行一些後期處理,解壓縮它,以及然後進行進一步處理。解壓縮:給出:checkdir錯誤:... /目錄存在但不是目錄

我可以使用Windows 7的圖形用戶界面「全部提取」,一切工作正常 - 提取工作,進入「問題目錄」是沒有問題的。長久以來,每個人都這樣做。

它抱怨的目錄包含.obj和.md文件。在bash shell中,我可以去它並列出它,並且一切都很好(在Windows提取它之後列出它)。但是使用unzip命令,我無法提取build.zip的這部分內容。我得到以下錯誤(和之前它前面的成功):

inflating: bld_731/build_20150731/GVII/Software/_bld/rel/tcf/TscControlFmtCtrl.obj 
    inflating: bld_731/build_20150731/GVII/Software/_bld/rel/tdl.exe 
    checkdir error: bld_731/build_20150731/GVII/Software/_bld/rel/tdl exists but is not directory 
       unable to process build_20150731/GVII/Software/_bld/rel/tdl/. 
     ... 

checkdir error: bld_731/build_20150731/GVII/Software/_bld/rel/tdl exists but is not directory 
      unable to process build_20150731/GVII/Software/_bld/rel/tdl/CmfCmd.obj. 

正如你所看到的,這是兩個目錄,找到該目錄內的文件。

你知道如何解決這個問題嗎?我需要去另一個提取實用程序,也許?謝謝。

+1

約通用計算硬件和軟件的問題是題外話堆棧溢出,除非他們直接涉及主要用於編程的工具。您可以在超級用戶上獲得幫助。 –

+0

刪除linux標籤,因爲它具體**不**匹配問題。 –

+0

這是直接用於編程的工具。我試圖在bash腳本中使用unzip,並且失敗。 – Ray

回答

3

問題在於Cygwin。它將「tld.exe」的存在解釋爲「tld」也存在。解壓縮可能只是使用標準的統計調用來檢查「tld」是否已經存在,並檢查它是否是一個目錄。統計大概是說是「TLD」的存在(因爲「tld.exe」的存在)

touch testfile.exe 
if [ -f testfile ] ; then echo y ; else echo n; fi 

在一個普通的Linux系統類型,你會想到上面的回答「N」。但是在cygwin中,結果是'y'。

這是cygwin機制的一部分,它允許在命令中沒有.exe的情況下執行windows .exe文件。

參見:https://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-exe

+0

...拍攝,那麼有沒有辦法解壓這個文件呢? – Ray

+1

嘗試使用7z命令來提取文件。 (它知道如何提取.zip文件)這似乎沒有這個問題。在cygwin安裝程序中,選擇「存檔」類別下的「p7zip」包。提取命令是「7z x myfile.zip」 – wojtow

+0

謝謝。試着,繼續「無法從<我選擇的鏡像中獲取setup.ini>。我認爲有時候我的公司會阻止某些東西,有時候它們不會,除非你知道這個錯誤是什麼 – Ray