我的团队使用windows生成一个build.zip文件,我想对使用cygwin / bash脚本进行一些后期处理,解压缩,然后进行进一步处理。
我可以使用Windows 7 GUI“Extract All”,一切正常 - 提取工作,进入“问题目录”是没有问题的。每个人都已经这么做了很长时间。
它抱怨的目录包含.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.
如您所见,它既是目录,也是目录中找到的文件。
你知道如何解决这个问题吗?我需要去另一个提取工具吗?感谢。
答案 0 :(得分:3)
问题在于Cygwin。它解释了" tld.exe" as" tld"也存在。解压缩可能只是使用标准的stat调用来检查" tld"已存在并检查它是否是目录。 stat可能会说“是”" 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
答案 1 :(得分:0)
在git bash环境中,maven install
遇到了同样的问题。我通过手动创建*.exe
文件旁边的目录来解决它。 mvn install
然后解压缩了我的工件,没有问题。就您而言,只需转到目标目录并执行mkdir tdl